scancel(1) Slurm Commands scancel(1)

scancel - برای ارسال سیگنال یا لغو کارها یا گام‌های کاری تحت کنترل Slurm به کار می‌رود.

scancel [OPTIONS...] [job_id[_array_id][.step_id]] [job_id[_array_id][.step_id]...]

دستور scancel برای ارسال سیگنال یا لغو کارها، آرایه‌های کاری یا گام‌های کاری به کار می‌رود. می‌توان به تعداد دلخواهی از کارها یا گام‌های کاری با استفاده از پالایه‌های مشخصات کار یا فهرستی از شناسه‌های کار و/یا شناسه‌های گام که با فاصله از هم جدا شده‌اند، سیگنال ارسال کرد. اگر شناسه کار مربوط به یک آرایه کاری همراه با مقدار شناسه آرایه مشخص شود و کار مرتبط با آن شناسه آرایه از آرایه جدا شده باشد، تنها آن عضو از آرایه کاری لغو خواهد شد. اگر شناسه کار یک آرایه کاری بدون مقدار شناسه آرایه مشخص شود یا مقدار شناسه آرایه با کاری مطابقت داشته باشد که از آرایه جدا نشده است، تمام اعضای آن آرایه کاری لغو خواهند شد. هنگامی که یک کار ناهمگن (heterogeneous job) در وضعیت PENDING قرار دارد، به جای بخش‌های مجزای آن، فقط کل کار به صورت یکپارچه قابل لغو است. درخواست برای لغو یک بخش منفرد از یک کار ناهمگن در وضعیت PENDING منجر به بازگرداندن خطا خواهد شد. پس از آغاز اجرای کار، می‌توان بخش‌های مجزا را به جز جزء صفر لغو کرد. در صورتی که جزء صفر لغو شود، کل کار ناهمگن لغو خواهد شد. شناسه‌های گام (Step IDs) در سرتاسر کل کار ناهمگن یکتا هستند. لغو یک گام از طریق رهبر کار، آن گام را در تمام مؤلفه‌هایی که آن را دارند متوقف می‌کند و تخصیص منابع مؤلفه‌ها را در حال اجرا باقی می‌گذارد. لغو یک گام از طریق یک مؤلفه منفرد، تنها به گام همان مؤلفه سیگنال می‌دهد. اگر مؤلفه‌ای آن گام را نداشته باشد خطا محسوب نمی‌شود؛ تنها شناسه گامی که هیچ مؤلفه‌ای آن را نداشته باشد به عنوان شناسه کار نامعتبر گزارش می‌شود. سیگنال‌هایی غیر از SIGKILL پیش‌فرض تنها به گامِ... شناسه‌های گام در سرتاسر کل کار ناهمگن یکتا هستند. لغو یک گام از طریق مؤلفه صفر (رهبر کار ناهمگن)، آن گام را در هر مؤلفه‌ای که آن را دارد خاتمه می‌دهد و منابع اختصاص‌یافته به مؤلفه‌ها را در حال اجرا باقی می‌گذارد. اگر برخی از مؤلفه‌ها آن گام را نداشته باشند خطایی رخ نمی‌دهد؛ تنها شناسه گامی که هیچ مؤلفه‌ای آن را ندارد به عنوان شناسه کار نامعتبر گزارش می‌شود. لغو یک گام از طریق یک مؤلفه منفرد، تنها به گامِ همان مؤلفه سیگنال می‌فرستد. اگر آن مؤلفه این گام را نداشته باشد، درخواست به عنوان شناسه کار نامعتبر گزارش خواهد شد. سیگنال‌هایی به غیر از SIGKILL پیش‌فرض، تنها به گام مؤلفه‌ای ارسال می‌شوند که شناسه کار آن داده شده است. یک کار یا گام کاری تنها می‌تواند توسط مالک آن کار یا کاربر root سیگنال دریافت کند. اگر کاربری غیرمجاز برای ارسال سیگنال به یک کار یا گام کاری تلاش کند، پیام خطا چاپ شده و سیگنالی به کار ارسال نخواهد شد.

عملیات scancel را به کارهای تحت این حساب کاربری مالی (charge account) محدود می‌کند.
تنظیم AdminComment روی کار در حین لغو کارها. کاربر باید دارای امتیازات مدیر سیستم (Administrator) در سامانه باشد.
به‌طور پیش‌فرض، سیگنال‌هایی غیر از SIGKILL به گام دسته‌ای (batch step یا همان اسکریپت شل) ارسال نمی‌شوند. با استفاده از این گزینه، scancel تنها به گام دسته‌ای سیگنال می‌فرستد و نه به هیچ‌یک از گام‌های دیگر. این قابلیت زمانی مفید است که اسکریپت شل نیاز به دریافت و به دام انداختن (trap) سیگنال و انجام اقداماتی خاص داشته باشد. بیشتر شل‌ها توانایی مدیریت سیگنال‌ها را در زمان اجرای یک دستور (یعنی زمانی که فرآیند فرزند گام دسته‌ای فعال است) ندارند، بنابراین شل باید تا پایان دستور منتظر بماند تا سیگنال را پردازش کند. فرآیندهای فرزند گام دسته‌ای با این گزینه سیگنال دریافت نمی‌کنند. در صورت نیاز به این رفتار، به جای آن از -f یا --full استفاده کنید. نکته: در صورت استفاده همزمان با -f یا --full، این گزینه نادیده گرفته می‌شود. نکته: اگر step_id مشخص شده باشد، این گزینه قابل استفاده نیست. نکته: خود شل ممکن است به هنگام دریافت بسیاری از سیگنال‌ها بسته شود. می‌توانید با به دام انداختن صریح سیگنال‌ها در اسکریپت شل (مانند "trap <arg> <signals>") از این اتفاق جلوگیری کنید. برای جزئیات به مستندات شل مراجعه کنید.
خوشه‌ای که دستورها باید به آن ارسال شوند. متضمن گزینه --ctld است. توجه داشته باشید که slurmdbd باید فعال و در دسترس باشد تا این گزینه به درستی کار کند، مگر اینکه در یک فدراسیون با تنظیمات FederationParameters=fed_display اجرا شود.
اگر این گزینه همراه با --interactive، --sibling، شناسه‌های کار فدراسیونی یا شناسه‌های مشخص گام به کار نرود، یک درخواست منفرد به slurmctld ارسال می‌کند تا به تمامی کارهای مطابق با پالایه‌های ارائه‌شده سیگنال دهد. این امر عملکرد slurmctld و scancel را به شکل چشمگیری بهبود می‌بخشد. در غیر این صورت، این گزینه باعث می‌شود scancel هر درخواست سیگنال‌دهی کار را به جای ارسال مستقیم به دیمن‌های slurmd، به دیمن slurmctld بفرستد؛ این امر بار اضافی (overhead) را افزایش داده ولی پایداری و تحمل خطای بهتری ارائه می‌دهد. هنگامی که از گزینه --clusters استفاده می‌شود، --ctld رفتار پیش‌فرض است.
تأیید درخواست لغو کاری که از طریق scrontab ارسال شده است. این گزینه تنها زمانی مؤثر است که گزینه "explicit_scancel" در ScronParameters فعال باشد.
به‌طور پیش‌فرض، سیگنال‌هایی غیر از SIGKILL به گام دسته‌ای (اسکریپت شل) ارسال نمی‌شوند. با استفاده از این گزینه، scancel به اسکریپت دسته‌ای و فرآیندهای فرزند آن نیز سیگنال می‌فرستد. اکثر شل‌ها نمی‌توانند در زمان اجرای یک دستور (یعنی فرآیند فرزندِ گام دسته‌ای) سیگنال‌ها را مدیریت کنند؛ بنابراین شل باید تا پایان آن دستور منتظر بماند تا سیگنال را پردازش کند. برخلاف -b و --batch، با این گزینه به فرآیندهای فرزند گام دسته‌ای نیز سیگنال ارسال می‌شود. نکته: گام‌های srun نیز از فرزندان گام دسته‌ای محسوب می‌شوند، بنابراین با استفاده از این گزینه، به این گام‌ها نیز سیگنال فرستاده می‌شود.
چاپ پیام راهنما که تمامی گزینه‌های scancel را شرح می‌دهد.
داده‌های میانگیر جهشی (burst buffer) را تخلیه (stage out) نکن.
حالت تعاملی. پیش از اجرای عملیات لغو، تأییدیه هر job_id.step_id را دریافت می‌کند.
محدود کردن عملیات scancel به کارهایی با این نام کاربری شغلی.
محدود کردن عملیات scancel به کارهای متعلق به کاربر فعلی.
لغو هر کاری که از هریک از میزبان‌های داده‌شده استفاده می‌کند. این فهرست می‌تواند به صورت فهرستی از میزبان‌ها با ویرگول جداشده، محدوده‌ای از میزبان‌ها (برای نمونه host[1-5,7,...]) یا نام یک فایل مشخص شود. فهرست میزبان‌ها تنها زمانی به عنوان نام فایل تلقی خواهد شد که حاوی نویسه "/" باشد.
محدود کردن عملیات scancel به کارهای موجود در این افراز (partition).
محدود کردن عملیات scancel به کارهایی با این کیفیت خدمات (QoS).
اگر کار مشخص‌شده پیش‌تر خاتمه یافته باشد، خطایی گزارش نکن. این گزینه با گزینه --verbose ناسازگار است.
محدود کردن عملیات scancel به کارهایی با این نام رزرو (reservation).
حذف یک کار همزاد (sibling job) فعال از یک کار فدراسیونی. -s, --signal=signal_name نام یا شماره سیگنالی که باید ارسال شود. اگر از این گزینه استفاده نشود، کار یا گام مشخص‌شده خاتمه خواهد یافت.
عملیات scancel را به کارهای موجود در این وضعیت محدود می‌کند. job_state_name می‌تواند یکی از مقادیر “PENDING”، “RUNNING” یا “SUSPENDED” باشد.
چاپ یک پیام راهنمای مختصر شامل فهرست گزینه‌های scancel.
عملیات scancel را به کارهای متعلق به کاربر داده‌شده محدود می‌کند.
چاپ پیام‌های گزارش‌گیری بیشتر. تکرار v جزئیات گزارش را افزایش می‌دهد. این گزینه با گزینه --quiet ناسازگار است.
چاپ شماره نسخه دستور scancel.
عملیات scancel را به کارهایی که از این کلید مشخصه حجم‌کاری (wckey) استفاده می‌کنند محدود می‌کند.

شناسه کار Slurm برای ارسال سیگنال. همچنین می‌توان به‌جای شناسه عددی کار، از یک SLUID استفاده کرد.
شناسه گامِ مربوط به گام کار که باید به آن سیگنال فرستاده شود. در صورت عدم تعیین، عملیات در سطح کار انجام می‌پذیرد.

اگر نه از --batch و نه از --signal استفاده نشود، کل کار خاتمه خواهد یافت.

هنگامی که از --batch استفاده شود، به فرایندهای پوسته دسته‌ای سیگنال فرستاده می‌شود. فرایندهای فرزند پوسته توسط Slurm سیگنال دریافت نخواهند کرد، اما پوسته ممکن است سیگنال را فوروارد کند.

هنگامی که از --batch استفاده نشود اما از --signal استفاده شود، به تمام گام‌های کار سیگنال ارسال خواهد شد، اما به خود اسکریپت دسته‌ای سیگنالی فرستاده نمی‌شود.

هنگام اجرای scancel بدون گزینه --ctld؛ یا همراه با گزینه --ctld و گزینه‌های --interactive، --sibling، یا شناسه‌های گام مشخص؛ یک فراخوانی روال از راه دور (RPC) به slurmctld فرستاده می‌شود تا تمام کارها دریافت شوند. سپس scancel برای هر کاری که با فیلترهای درخواست‌شده مطابقت دارد، یک فراخوانی روال از راه دور ارسال سیگنال می‌فرستد.

هنگام اجرای scancel با گزینه --ctld و بدون گزینه‌های --interactive، --sibling یا شناسه‌های گام مشخص، یک فراخوانی روال از راه دور واحد به slurmctld فرستاده می‌شود تا به تمام کارهای منطبق با فیلترهای درخواست‌شده سیگنال ارسال کند. بنابراین توصیه می‌شود از گزینه --ctld به‌منظور کاهش تعداد فراخوانی‌های روال از راه دور ارسالی به slurmctld استفاده شود.

اگر تعداد بسیار زیادی فراخوانی به‌طور هم‌زمان از سوی scancel یا سایر دستورهای کلاینت Slurm که فراخوانی روال از راه دور به دیمن slurmctld می‌فرستند دریافت شود، می‌تواند به افت عملکرد دیمن slurmctld منجر شده و احتمالاً باعث ایجاد شرایط منع سرویس (denial of service) گردد.

دستور scancel یا سایر دستورهای کلاینت Slurm را که فراخوانی‌های روال از راه دور به slurmctld می‌فرستند، درون حلقه‌ها در اسکریپت‌های پوسته یا دیگر برنامه‌ها اجرا نکنید. اطمینان حاصل کنید که برنامه‌ها، فراخوانی‌های scancel را به حداقل مقدار لازم برای اطلاعاتی که قصد گردآوری آن را دارید محدود می‌سازند..SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)"

برخی از گزینه‌های scancel را می‌توان از طریق متغیرهای محیطی تعیین کرد. این متغیرهای محیطی، به همراه گزینه‌های متناظرشان، در زیر فهرست شده‌اند. (نکته: گزینه‌های خط فرمان همواره بر این تنظیمات اولویت دارند.)

-A, --account=account
-b, --batch
--ctld
-c, --cron
-f, --full
-H, --hurry
-i, --interactive
-n, --name=job_name
-p, --partition=partition_name
-q, --qos=qos
-t, --state=job_state_name
-u, --user=user_name
-v, --verbose
--wckey=wckey
محل قرارگیری فایل پیکربندی Slurm.
-M, --clusters
پرچم‌های اشکال‌زدایی را برای استفاده توسط scancel مشخص می‌کند. برای فهرست کامل پرچم‌ها، DebugFlags را در صفحهٔ راهنمای slurm.conf(5) ببینید. این متغیر محیطی بر مقدار تنظیم‌شده در slurm.conf اولویت دارد.

اگر چندین فیلتر مشخص شده باشد (مانند --partition و --name) تنها به کارهایی که با تمام گزینه‌های فیلترکردن همخوانی داشته باشند سیگنال ارسال خواهد شد.

لغو یک گام کاری (job step) منجر به پایان یافتن کار نخواهد شد. برای آزادسازی تخصیص منابع، خود کار باید لغو شود.

برای لغو یک کار، scancel را بدون گزینهٔ --signal اجرا کنید. این دستور ابتدا یک سیگنال SIGCONT به تمام گام‌ها ارسال می‌کند تا در نهایت آن‌ها را بیدار کند، سپس یک SIGTERM می‌فرستد، بعد به مدت بازهٔ زمانی KillWait تعریف‌شده در فایل slurm.conf منتظر می‌ماند و در نهایت اگر هنوز پایان نیافته باشند یک SIGKILL ارسال می‌کند. این کار به کار/گام(های) در حال اجرا فرصت پاک‌سازی می‌دهد.

اگر مقدار سیگنال "KILL" به کل یک کار ارسال شود، این عمل گام‌های فعال کار را لغو می‌کند اما خود کار را لغو نخواهد کرد.

هنگام استفاده از SlurmDBD، به کاربرانی که یک AdminLevel برای آن‌ها تعریف شده است (Operator یا Admin) و کاربرانی که هماهنگ‌کننده حساب (account coordinator) هستند، این اختیار داده می‌شود که scancel را برای کارهای سایر کاربران اجرا کنند.

ارسال SIGTERM به گام‌های ۱ و ۳ از کار 1234:
$ scancel --signal=TERM 1234.1 1234.3
لغو کار 1234 به همراه تمام گام‌های آن:
$ scancel 1234
ارسال SIGKILL به تمام گام‌های کار 1235، بدون لغو خود کار:
$ scancel --signal=KILL 1235
ارسال SIGUSR1 به فرایندهای شل دسته‌ای (batch shell) کار 1236:
$ scancel --signal=USR1 --batch 1236
لغو تمام کارهای در انتظار متعلق به کاربر «bob» در پارتیشن «debug»:
$ scancel --state=PENDING --user=bob --partition=debug
لغو تنها شناسهٔ آرایهٔ ۴ از کار آرایه‌ای 1237:
$ scancel 1237_4

کپی‌رایت (C) 2002-2007 متعلق به The Regents of the University of California. تولید شده در Lawrence Livermore National Laboratory (همچنین ببینید: DISCLAIMER).
کپی‌رایت (C) 2008-2011 متعلق به Lawrence Livermore National Security.
کپی‌رایت (C) 2010-2022 متعلق به SchedMD LLC.

این فایل بخشی از Slurm است، یک برنامهٔ مدیریت منابع. برای جزئیات بیشتر، ببینید: https://slurm.schedmd.com.

نرم‌افزار Slurm یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط Free Software Foundation منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخهٔ 2 مجوز و چه (به انتخاب خودتان) هر نسخهٔ بالاتر دیگری.

نرم‌افزار Slurm با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به GNU General Public License مراجعه کنید..SH "همچنین ببینید (SEE ALSO)" slurm_kill_job (3)، slurm_kill_job_step (3)

Slurm Commands Slurm 26.05