CLUSH(1) ClusterShell User Manual CLUSH(1)

clush - اجرای موازی دستورات پوسته روی گره‌های کلاستر

clush -a | -g group | -w nodes [OPTIONS]

clush -a | -g group | -w nodes [OPTIONS] command

clush -a | -g group | -w nodes [OPTIONS] --copy file | dir [ file | dir ...] [ --dest path ]

clush -a | -g group | -w nodes [OPTIONS] --rcopy file | dir [ file | dir ...] [ --dest path ]

دستور clush برنامه‌ای برای اجرای موازی دستورات روی یک خوشه (کلاستر) و جمع‌آوری نتایج آن‌ها است. clush دستورات را به صورت تعاملی اجرا می‌کند یا می‌تواند درون اسکریپت‌های پوسته و سایر برنامه‌ها مورد استفاده قرار گیرد. این برنامه یک پیشانه (front-end) برای کتابخانه ClusterShell است که چارچوب اجرای موازی سبک، یکپارچه و مقاومی را فراهم می‌کند؛ بنابراین به اسکریپت‌های سنتی پوسته امکان می‌دهد از برخی ویژگی‌های این کتابخانه بهره‌مند شوند. clush در حال حاضر به‌طور پیش‌فرض از کارگزار (worker) اس‌اس‌اچ ClusterShell استفاده می‌کند که تنها نیازمند ssh(1) (کلاینت OpenSSH SSH) است.

دستور clush می‌تواند به صورت غیرتعاملی برای اجرای یک command پوسته راه‌اندازی شود، یا به عنوان یک پوسته تعاملی فراخوانی گردد. برای شروع یک نشست تعاملی clush، دستور clush را بدون تعیین command فراخوانی کنید.

حالت غیرتعاملی (Non-interactive mode)
هنگامی که clush به صورت غیرتعاملی آغاز می‌شود، command به‌طور موازی روی میزبان‌های راه دور مشخص‌شده اجرا می‌گردد. اگر گزینه -b یا --dshbak مشخص شده باشد، clush منتظر تکمیل دستور می‌ماند و سپس نتایج گردآوری‌شده خروجی را نمایش می‌دهد.

گزینه -w به شما امکان می‌دهد با استفاده از نحو NodeSet مربوط به ClusterShell، میزبان‌های راه دور را مشخص کنید، از جمله نحو ویژه گروه‌های گره @group و نحو الگوهای گسترش‌یافته (Extended Patterns) تا از محاسبات پایه NodeSet (مانند @Agroup\&@Bgroup) بهره ببرید. برای اطلاعات بیشتر بخش EXTENDED PATTERNS را در nodeset(1) و همچنین groups.conf(5) ببینید.

مگر اینکه گزینه --nostdin (یا -n) مشخص شده باشد، clush متصل بودن ورودی استاندارد خود به ترمینال را تشخیص می‌دهد (مشخص‌شده توسط isatty(3)). در صورت اتصال واقعی به ترمینال، clush در حین اجرای دستورات به ورودی استاندارد گوش می‌دهد و منتظر فشردن کلید Enter می‌ماند. انجام این کار وضعیت گره‌های جاری را نمایش می‌دهد. اگر ورودی استاندارد به ترمینال متصل نباشد، و مگر اینکه گزینه --nostdin مشخص شده باشد، clush ورودی استاندارد دستورات راه دور را به ورودی استاندارد خود متصل می‌کند و الگوهای اسکریپت‌نویسی زیر را امکان‌پذیر می‌سازد:

# echo foo | clush -w node[40-42] -b cat
---------------
node[40-42]
---------------
foo

لطفاً چند مثال عالی دیگر را در بخش «مثال‌ها» در ادامه مشاهده کنید.

نشست تعاملی (Interactive session)
اگر command مشخص نشده باشد و ورودی استاندارد به یک ترمینال متصل باشد، clush به صورت تعاملی اجرا می‌شود. در این حالت، clush از کتابخانه readline گنو برای خواندن خطوط دستور استفاده می‌کند. Readline دستوراتی برای جستجو در تاریخچه دستورات جهت یافتن خطوط حاوی یک رشته مشخص فراهم می‌کند؛ برای نمونه کلیدهای Control-R را فشار دهید تا در تاریخچه به دنبال ورودی بعدی منطبق با رشته جستجوی تایپ‌شده بگردید. clush همچنین پیشوندهای تک‌نویسه‌ای ویژه‌ای را شناسایی می‌کند که به کاربر امکان می‌دهند مجموعه گره‌های جاری (nodeset - گره‌هایی که دستورات در آن‌ها اجرا می‌شوند) را مشاهده و ویرایش کند.
دستورات تعاملی تک‌نویسه‌ای عبارتند از:
نمایش مجموعه گره‌های جاری
تنظیم مجموعه گره‌های جاری
افزودن گره‌ها به مجموعه گره‌های جاری
حذف گره‌ها از مجموعه گره‌های جاری
اجرای COMMAND روی سیستم محلی
تغییر حالت قالب خروجی (حالت گردآوری‌شده یا استاندارد)

برای خروج از یک نشست تعاملی، عبارت quit یا Control-D را وارد کنید.

اجرای محلی ( --worker=exec یا -R exec )
دستور clush به جای اجرای دستور ارائه‌شده روی گره‌های راه دور، می‌تواند از کارگزار اختصاصی exec برای راه‌اندازی محلی دستور به ازای هر گره استفاده کند. برخی پارامترها را می‌توان در خط فرمان استفاده کرد تا دستوری متفاوت برای هر گره ایجاد شود. پارامترهای %h یا %host با نام گره، و %n یا %rank با رتبه راه دور [0-N] جایگزین می‌شوند (برای دریافت علامت % واقعی از %% استفاده کنید). پارامتر %hosts با کل مجموعه گره‌های هدف جایگزین خواهد شد که در این حالت دستور تنها یک بار اجرا می‌شود.
حالت کپی فایل ( --copy )
هنگامی که clush با گزینه -c یا --copy آغاز می‌شود، تلاش خواهد کرد فایل‌ها و/یا دایرکتوری‌های مشخص‌شده را در گره‌های کلاستر ارائه‌شده کپی کند. از گزینه --dest می‌توان برای تعیین یک مسیر واحد که همه فایل(ها) باید در گره‌های مقصد در آن کپی شوند استفاده کرد. در صورت عدم تعیین --dest، clush تلاش خواهد کرد هر فایل یا دایرکتوری موجود در خط فرمان را در همان مکان متناظر در گره‌های مقصد کپی کند.
حالت کپی معکوس فایل ( --rcopy )
هنگامی که clush با گزینه --rcopy اجرا می‌شود، تلاش می‌کند فایل و/یا دایرکتوری مشخص‌شده را از گره‌های کلاستر ارائه‌شده دریافت کند. اگر گزینه --dest مشخص شده باشد، باید یک مسیر دایرکتوری باشد که در آن فایل‌ها با پسوند نام میزبان ذخیره شوند. اگر مسیر مقصد مشخص نشده باشد، دایرکتوری والد هر فایل یا دایرکتوری به عنوان مقصد محلی در نظر گرفته خواهد شد.

نمایش شماره نسخه clush و خروج
منبع گروه اختیاری groups.conf(5) برای استفاده
عدم بررسی ورودی احتمالی از stdin؛ این گزینه باید هنگامی که clush در پس‌زمینه (یا درون اسکریپت‌ها) اجرا می‌شود استفاده گردد.
استفاده از فایل پیکربندی جایگزین برای groups.conf(5)
استفاده از فایل پیکربندی جایگزین برای clush.conf(5)
لغو و بازنویسی هر یک از گزینه‌های key=value در clush.conf(5) (در صورت نیاز تکرار کنید)
انتخاب گره‌های هدف:
گره‌هایی که دستور باید روی آن‌ها اجرا شود
مستثنی کردن گره‌ها از فهرست گره‌ها
اجرای دستور روی همه گره‌ها
اجرای دستور روی یک گروه از گره‌ها
مستثنی کردن گره‌ها از این گروه
مسیر فایلی شامل فهرستی از تک‌میزبان‌ها، مجموعه‌های گره یا گروه‌های گره که با فاصله یا خطوط جدید جدا شده‌اند (می‌تواند چندین بار، به ازای هر فایل، مشخص شود)
فایل پیکربندی توپولوژی برای استفاده در حالت درختی
انتخاب تصادفی N گره از مجموعه گره‌ها
رفتار خروجی:
حالت بی‌صدا، چاپ تنها خروجی‌های ضروری
حالت پرگو، چاپ پیام‌های آگاهی‌بخش
چاپ پیام‌های بیشتر برای مقاصد اشکال‌زدایی
عدم نمایش پیشوند منبع گروه (همیشه @groupname)
غیرفعال کردن بلوک سرآیند و مرتب‌سازی خروجی بر اساس گره‌ها؛ اگر -b/-B مشخص نشده باشد، clush منتظر اتمام همه دستورات می‌ماند و سپس خروجی تجمیع‌شده دستورات با کدهای بازگشتی یکسان را، مرتب‌شده بر اساس نام گره، نمایش می‌دهد؛ در غیر این صورت، در صورت استفاده همزمان با -b/-B (مانند -bL)، clush یک «گردآوری زنده» از نتایج را به صورت خط‌به‌خط فعال می‌کند، به گونه‌ای که خط بعدی به محض امکان نمایش داده می‌شود (مثلاً وقتی همه گره‌ها آن خط را ارسال کرده باشند)
غیرفعال کردن برچسب‌گذاری خروجی دستور
نمایش پیشرفت در طول اجرای دستور؛ اگر نوشتن روی ورودی استاندارد انجام شود، نشانگر زنده پیشرفت، پهنای باند کلی داده‌های نوشته‌شده در گره‌های مقصد را نمایش می‌دهد
نمایش نتایج گردآوری‌شده به شیوه شبیه dshbak (توجه: تنها تلاش می‌کند خروجی دستورات با کدهای بازگشتی یکسان را تجمیع کند)
مانند -b اما شامل خطای استاندارد نیز می‌شود
جمع‌کردن و خلاصه‌سازی مجموعه گره‌ها با استفاده از گروه‌های گره
برای مجموعه‌گره‌های n بعدی (nD)، مجموعه گره نمایش‌داده‌شده (مثلاً در سرآیندهای خروجی گردآوری‌شده) را فقط در امتداد محور ارائه‌شده خلاصه‌سازی می‌کند. محورها از ۱ تا n شماره‌گذاری می‌شوند و در اینجا می‌توانند با استفاده از نحو rangeset (مانند '1'، '1-2'، '1,3') یا با یک عدد منفی منفرد مشخص شوند که به معنی شمارش نمایه از انتها است. از آنجا که برخی مجموعه‌گره‌ها ممکن است چندین بعد مختلف داشته باشند، نمایه‌های محور به طور خودکار به محدوده مجاز کاهش می‌یابند. این گزینه معادل اختصاصی پیش‌فرض کتابخانه fold_axis به ازای هر فراخوانی است.
بازگرداندن بزرگ‌ترین کد از میان کدهای بازگشتی دستورات
دستور clush می‌تواند از متغیرهای محیطی NO_COLOR، CLICOLOR و CLICOLOR_FORCE استفاده کند. متغیر NO_COLOR بر CLICOLOR_FORCE تقدم دارد که خود بر CLICOLOR اولویت دارد. هنگام استفاده از گزینه --color این متغیرهای محیطی نادیده گرفته می‌شوند. --color مشخص می‌کند که آیا از رنگ‌های ANSI برای احاطه کردن پیشوند/سرآیند گره یا مجموعه گره‌ها با توالی‌های فرار (escape) جهت نمایش رنگی در ترمینال استفاده شود یا خیر. مقدار WHENCOLOR برابر با never، always یا auto است (که در صورت اشاره خروجی/خطای استاندارد به یک ترمینال از رنگ استفاده می‌کند). رنگ‌ها روی [34m (متن آبی برای خروجی استاندارد) و [31m (متن قرمز برای خطای استاندارد) تنظیم شده‌اند و قابل تغییر نیستند.
نمایش تفاوت بین خروجی‌های مشترک (یافتن بهترین خروجی مرجع با تمرکز بر بزرگ‌ترین مجموعه گره و همچنین کوچک‌ترین کد بازگشتی دستور)
دایرکتوری خروجی برای فایل‌های stdout (اختیاری)
دایرکتوری خروجی برای فایل‌های stderr (اختیاری)
کپی فایل:
کپی فایل یا دایرکتوری محلی در گره‌های راه دور
کپی فایل یا دایرکتوری از گره‌های راه دور
فایل یا دایرکتوری مقصد در گره‌ها (اختیاری: در صورت عدم تعیین، از مسیر اولین دایرکتوری مبدأ استفاده می‌شود)
حفظ زمان‌های تغییر و دسترسی‌ها (مودها)
گزینه‌های اتصال:
عدم اجرای همزمان بیش از FANOUT دستور، مفید برای محدود کردن مصرف منابع. در حالت درختی، همان مقدار fanout روی گره اصلی (head node) و روی هر درگاه (gateway) استفاده می‌شود (مقدار fanout منتشر می‌گردد). بدین معنا که اگر fanout برابر با 16 باشد، هر درگاه تا 16 اتصال همزمان به گره‌های هدف خود برقرار می‌کند. مقدار پیش‌فرض fanout در clush.conf(5) تعریف شده است.
اجرای دستور راه دور به عنوان کاربر مشخص‌شده
می‌تواند برای ارائه گزینه‌های ssh استفاده شود، برای نمونه -o "-p 2022 -i ~/.ssh/myidrsa";؛ این گزینه‌ها ابتدا به ssh اضافه می‌شوند و گزینه‌های پیش‌فرض را لغو می‌کنند
محدود کردن زمان اتصال به یک گره
محدود کردن زمان اجرای دستور روی گره
حالت اجرا؛ مقادیر MODE را در <confdir>/*.conf تعریف کنید
نام کارگزار برای استفاده در اتصال (exec، ssh، rsh، pdsh، یا نام یک ماژول کارگزار پایتون)، پیش‌فرض ssh است
تعیین فعال بودن اجرای راه دور: در حالت درختی، 'yes' اتصالات را برای اجرا به گره‌های برگ اجبار می‌کند، و 'no' اتصالات را تا گره‌های والد برگ برای اجرا برقرار می‌سازد (پیش‌فرض 'yes' است)

برای توضیح مختصری درباره این گزینه‌ها، -h, --help را ببینید.

به‌طور پیش‌فرض، وضعیت خروج صفر نشان‌دهنده موفقیت دستور clush است اما هیچ اطلاعاتی در مورد وضعیت خروج دستورات راه دور ارائه نمی‌دهد. با این حال، هنگامی که گزینه -S مشخص شده باشد، وضعیت خروج clush برابر با بزرگ‌ترین مقدار از میان کدهای بازگشتی دستورات راه دور خواهد بود.

برای دستورات راه دور ناموفق که وضعیت خروج آن‌ها غیرصفر است، و مگر اینکه ترکیب گزینه‌های -qS مشخص شده باشد، clush پیام‌هایی مشابه زیر را نمایش می‌دهد:

# clush -w node[3-5,62] uname -r
اجرای موازی دستور uname -r روی گره‌های: node3، node4، node5 و node62

# clush -w node[1-3] --worker=exec ping -c1 %host
اجرای محلی و موازی یک دستور ping برای گره‌های: node1، node2 و node3. همچنین می‌توانید از -R exec به عنوان گزینه کوتاه‌تر و سازگار با pdsh استفاده کنید.

# clush -w node[3-5,62] -b uname -r
اجرای دستور uname -r روی nodes[3-5,62] و نمایش نتایج خروجی گردآوری‌شده (یکپارچه مشابه dshbak).
# clush -w node[3-5,62] -bL uname -r
حالت خطی: اجرای دستور uname -r روی nodes[3-5,62] و نمایش نتایج خروجی گردآوری‌شده بدون بلوک سرآیند پیش‌فرض.
# ssh node32 find /etc/yum.repos.d -type f | clush -w node[40-42] -b xargs ls -l
جستجوی برخی فایل‌ها در node32 درون /etc/yum.repos.d و استفاده از clush برای فهرست کردن موارد منطبق روی node[40-42]، و استفاده از -b برای نمایش نتایج گردآوری‌شده.
# clush -w node[3-5,62] --diff dmidecode -s bios-version
اجرای این دستور لینوکس برای دریافت نسخه بایوس روی nodes[3-5,62] و نمایش تفاوت‌های نسخه (در صورت وجود).
# clush -w dc[1-2]n[1-2] --axis=1 -b uname -r
گردآوری خروجی و خلاصه‌سازی سرآیند مجموعه‌گره نمایش‌داده‌شده تنها در امتداد محور ۱؛ به عنوان مثال نمایش dc[1-2]n1,dc[1-2]n2 به جای dc[1-2]n[1-2] در بلوک سرآیند. همچنین برای تغییر دائمی آن به fold_axis در پیکربندی پیش‌فرض‌های کتابخانه مراجعه کنید.

# clush -a uname -r
اجرای دستور uname -r روی تمام گره‌های کلاستر؛ برای راه‌اندازی تمام گره‌های کلاستر (فیلد all:) به groups.conf(5) مراجعه کنید.
# clush -a -x node[5,7] uname -r
اجرای دستور uname -r روی تمام گره‌های کلاستر به‌جز گره‌های node5 و node7.
# clush -a --diff cat /some/file
اجرای دستور cat /some/file روی تمام گره‌های کلاستر و نمایش سطر‌به‌سطر تفاوت‌ها (در صورت وجود) میان خروجی‌های مشترک.

# clush -w @oss modprobe lustre
اجرای دستور modprobe lustre روی گره‌های متعلق به گروه گره با نام oss؛ برای راه‌اندازی گروه‌های گره (فیلد map:) به groups.conf(5) مراجعه کنید.
# clush -g oss modprobe lustre
مشابه مثال پیشین اما با استفاده از -g برای پرهیز از پیشوند @ گروه.
# clush -w @mds,@oss modprobe lustre
می‌توانید چندین گروه گره را با جدا کردن آن‌ها با کاما مشخص کنید (برای اطلاعات بیشتر لطفاً بخش EXTENDED PATTERNS در nodeset(1) و همچنین groups.conf(5) را ببینید).

# clush -w node[3-5,62] --copy /etc/motd
کپی فایل محلی /etc/motd در گره‌های راه دور node[3-5,62].
# clush -w node[3-5,62] --copy /etc/motd --dest /tmp/motd2
کپی فایل محلی /etc/motd در گره‌های راه دور node[3-5,62] در مسیر /tmp/motd2.
# clush -w node[3-5,62] -c /usr/share/doc/clustershell
کپی بازگشتی دایرکتوری محلی /usr/share/doc/clustershell در همان مسیر در گره‌های راه دور node[3-5,62].
# clush -w node[3-5,62] --rcopy /etc/motd --dest /tmp
کپی /etc/motd از گره‌های راه دور node[3-5,62] در دایرکتوری محلی /tmp، به گونه‌ای که نام میزبان راه دور به انتهای نام هر فایل افزوده می‌شود، مانند /tmp/motd.node3.

$CLUSTERSHELL_CFGDIR/clush.conf
فایل پیکربندی سراسری clush. اگر متغیر $CLUSTERSHELL_CFGDIR تعریف نشده باشد، به جای آن از /etc/clustershell/clush.conf استفاده می‌شود.
$XDG_CONFIG_HOME/clustershell/clush.conf
فایل پیکربندی کاربر برای clush. اگر متغیر $XDG_CONFIG_HOME تعریف نشده باشد، به جای آن از $HOME/.config/clustershell/clush.conf استفاده می‌شود.
{sys.prefix}/etc/clustershell/clush.conf
فایل پیکربندی هنگامی که ClusterShell درون یک محیط مجازی پایتون نصب شده باشد.
$HOME/.local/etc/clustershell/clush.conf
فایل پیکربندی کاربر محلی برای clush (نصب پیش‌فرض برای pip --user)
~/.clush.conf
فایل منسوخ‌شده پیکربندی کاربری clush (از نسخه ۱.۹ به بعد دیگر خوانده نمی‌شود).
~/.clush_history
فایلی که تاریخچه دستورات تعاملی clush در آن ذخیره می‌شود.

clubak(1), cluset(1), nodeset(1), readline(3), clush.conf(5), groups.conf(5).

https://clustershell.readthedocs.io

برای ارسال گزارش اشکال یا بازخورد از نشانی زیر استفاده کنید:
https://github.com/clustershell/clustershell/issues

Stephane Thiell

مجوز عمومی کلی گنو کمتر (LGPL) نسخه ۲.۱ یا بالاتر (LGPLv2.1+)

2026-07-16 1.10.1