SYSTEMD.KILL(5) systemd.kill SYSTEMD.KILL(5)

systemd.kill - پیکربندی روال خاتمه دادن به فرایندها

service.service, socket.socket, mount.mount, swap.swap, scope.scope

فایل‌های پیکربندی واحد برای سرویس‌ها، سوکت‌ها، نقاط سوار کردن، دستگاه‌های سواپ و محدوده‌ها (scopes) در زیرمجموعه‌ای از گزینه‌های پیکربندی مشترک هستند که روال خاتمه دادن به فرایندهای متعلق به آن واحد را تعریف می‌کنند.

این صفحه راهنما گزینه‌های پیکربندی مشترک میان این پنج نوع واحد را فهرست می‌کند. برای گزینه‌های مشترک میان تمام فایل‌های پیکربندی واحد به systemd.unit(5) مراجعه کنید، و برای اطلاعات بیشتر درباره گزینه‌های فایل پیکربندی مخصوص هر نوع واحد، systemd.service(5)، systemd.socket(5)، systemd.swap(5)، systemd.mount(5) و systemd.scope(5) را ببینید.

گزینه‌های پیکربندی روال خاتمه، بسته به نوع واحد در بخش [Service]، [Socket]، [Mount] یا [Swap] پیکربندی می‌شوند.

KillMode=

چگونگی خاتمه دادن به فرایندهای این واحد را مشخص می‌کند. یکی از مقادیر control-group، mixed، process، none.

اگر روی control-group تنظیم شود، تمام فرایندهای باقی‌مانده در گروه کنترلی (control group) این واحد در زمان توقف واحد خاتمه داده خواهند شد (برای سرویس‌ها: پس از اجرای دستور توقف، همان‌طور که با ExecStop= پیکربندی شده است). اگر روی mixed تنظیم شود، سیگنال SIGTERM (به زیر مراجعه کنید) به فرایند اصلی فرستاده می‌شود در حالی که سیگنال متعاقب SIGKILL (به زیر مراجعه کنید) به تمام فرایندهای باقی‌مانده در گروه کنترلی واحد ارسال می‌گردد. اگر روی process تنظیم شود، فقط خود فرایند اصلی خاتمه داده می‌شود (توصیه نمی‌شود!). اگر روی none تنظیم شود، هیچ فرایندی خاتمه داده نمی‌شود (به‌شدت نهی می‌شود!). در این حالت، در زمان توقف واحد تنها دستور توقف اجرا خواهد شد، اما هیچ فرایندی به شکل دیگری خاتمه داده نمی‌شود. فرایندهایی که پس از توقف زنده می‌مانند در گروه کنترلی خود باقی می‌مانند و گروه کنترلی پس از توقف همچنان به بقای خود ادامه می‌دهد مگر اینکه خالی باشد.

توجه داشته باشید که تنظیم KillMode= روی process یا حتی none توصیه نمی‌شود، زیرا این کار به فرایندها اجازه می‌دهد از چرخه حیات و مدیریت منابع مدیر سرویس فرار کنند و حتی در حالی که سرویس آن‌ها متوقف تلقی شده و فرض می‌شود هیچ منبعی مصرف نمی‌کند، در حال اجرا باقی بمانند.

فرایندها ابتدا از طریق SIGTERM خاتمه داده خواهند شد (مگر اینکه سیگنال ارسالی از طریق KillSignal= یا RestartKillSignal= تغییر یافته باشد). به‌صورت اختیاری، بلافاصله پس از آن یک SIGHUP ارسال می‌شود (در صورتی که با SendSIGHUP= فعال شده باشد). اگر فرایندها همچنان باقی بمانند پس از اینکه:

•فرایند اصلی یک واحد خارج شده باشد (مربوط به KillMode=: mixed)
•مدت‌زمان تأخیر پیکربندی‌شده از طریق TimeoutStopSec= سپری شده باشد (مربوط به KillMode=: control-group، mixed، process)

درخواست خاتمه با سیگنال SIGKILL یا سیگنال مشخص‌شده از طریق FinalKillSignal= تکرار می‌شود (مگر اینکه این مورد از طریق گزینه SendSIGKILL= غیرفعال شده باشد). برای اطلاعات بیشتر kill(2) را ببینید.

پیش‌فرض روی control-group است.

در نسخه 187 اضافه شد.

KillSignal=

مشخص می‌کند که هنگام متوقف کردن یک سرویس از چه سیگنالی استفاده شود. این گزینه سیگنالی را کنترل می‌کند که به عنوان اولین گام از خاموش کردن یک واحد ارسال می‌شود (به بالا مراجعه کنید)، و معمولاً پس از آن SIGKILL ارسال می‌گردد (به بالا و پایین مراجعه کنید). برای فهرستی از سیگنال‌های معتبر، signal(7) را ببینید. پیش‌فرض SIGTERM است.

توجه داشته باشید که درست پس از ارسال سیگنال مشخص‌شده در این تنظیم، systemd همواره SIGCONT را ارسال خواهد کرد تا اطمینان حاصل شود که حتی وظایف معلق‌شده (suspended tasks) نیز می‌توانند به‌طور پاکیزه خاتمه یابند.

در نسخه 187 اضافه شد.

RestartKillSignal=

مشخص می‌کند که هنگام راه‌اندازی مجدد یک سرویس از چه سیگنالی استفاده شود. همانند KillSignal= که در بالا توضیح داده شد عمل می‌کند، با این تفاوت که این تنظیم در یک کار راه‌اندازی مجدد (restart job) استفاده می‌شود. به‌طور پیش‌فرض تنظیم نشده است و از مقدار KillSignal= استفاده می‌شود.

در نسخه 244 اضافه شد.

SendSIGHUP=

مشخص می‌کند که آیا بلافاصله پس از ارسال سیگنال پیکربندی‌شده با KillSignal=، سیگنال SIGHUP به فرایندهای باقی‌مانده ارسال شود یا خیر. این گزینه برای اطلاع دادن به پوسته‌ها (shells) و برنامه‌های مشابه پوسته مبنی بر اینکه اتصال آن‌ها قطع شده است، مفید است. یک مقدار بولی (boolean) می‌گیرد. پیش‌فرض "no" است.

در نسخه 207 اضافه شد.

SendSIGKILL=

مشخص می‌کند که آیا در صورت باقی ماندن فرایندهایی از سرویس پس از روال عادی خاموش شدن، پس از اتمام مهلت زمانی (timeout)، سیگنال SIGKILL (یا سیگنال مشخص‌شده با FinalKillSignal=) به فرایندهای باقی‌مانده ارسال شود یا خیر. هنگامی که غیرفعال باشد، سرویسی با KillMode= برابر با control-group یا mixed در صورتی که فرایندهایی از سرویس‌های قبلی درون گروه کنترلی وجود داشته باشند، مجدداً راه‌اندازی نخواهد شد. یک مقدار بولی می‌گیرد. پیش‌فرض "yes" است.

در نسخه 187 اضافه شد.

FinalKillSignal=

مشخص می‌کند که در صورت فعال بودن SendSIGKILL=، پس از اتمام مهلت زمانی چه سیگنالی به فرایندهای باقی‌مانده ارسال شود. سیگنال پیکربندی‌شده در اینجا باید سیگنالی باشد که معمولاً توسط سرویس‌ها دریافت و پردازش نمی‌شود (SIGTERM مناسب نیست). توسعه‌دهندگان ممکن است استفاده از این گزینه را برای ایجاد یک روبرداری از حافظه (coredump) جهت عیب‌یابی اینکه چرا یک سرویس پس از دریافت سیگنال اولیه SIGTERM خاتمه نیافته است، مفید بیابند. این کار می‌تواند با پیکربندی LimitCORE= و تنظیم FinalKillSignal= روی یکی از دو سیگنال SIGQUIT یا SIGABRT انجام شود. پیش‌فرض SIGKILL است.

در نسخه 240 اضافه شد.

WatchdogSignal=

مشخص می‌کند که هنگام منقضی شدن مهلت زمانی سگ نگهبان (watchdog timeout) (فعال‌شده از طریق WatchdogSec=)، از چه سیگنالی برای خاتمه دادن به سرویس استفاده شود. پیش‌فرض SIGABRT است.

در نسخه 240 اضافه شد.

systemd(1), systemctl(1), journalctl(1), systemd.unit(5), systemd.service(5), systemd.socket(5), systemd.swap(5), systemd.mount(5), systemd.exec(5), systemd.directives(7), kill(2), signal(7)

systemd 261.2