| SYSTEMCTL(1) | systemctl | SYSTEMCTL(1) |
نام (NAME)
systemctl - کنترل و مدیریت سرویس‐ها و سیستم در systemd
خلاصه دستور (SYNOPSIS)
systemctl [گزینهها...] دستور [واحد...]
توضیحات (DESCRIPTION)
از systemctl می‐توان برای بررسی و کنترل وضعیت مدیر سیستم و سرویس‐های "systemd" استفاده کرد. لطفاً برای آشنایی با مفاهیم پایه و عملکردهایی که این ابزار مدیریت می‐کند، به systemd(1) مراجعه فرمایید.
دستورات (COMMANDS)
دستورات زیر پشتیبانی می‐شوند:
دستورات واحدها (بررسی و تغییر)
list-units [PATTERN...]
توجه داشته باشید که این دستور الگوهای واحد (unit templates) را نمایش نمی‐دهد، بلکه فقط نمونه‐های الگوهای واحد را نشان می‐دهد. الگوهای واحدی که نمونه‐سازی نشده‐اند قابل اجرا نیستند و بنابراین هرگز در خروجی این دستور ظاهر نخواهند شد. به طور خاص این بدان معناست که foo@.service هرگز در این فهرست نمایش داده نخواهد شد — مگر اینکه نمونه‐سازی شده باشد، مثلاً به عنوان foo@bar.service. برای فهرست کردن فایل‐های الگوی واحد نصب‐شده از list-unit-files (در ادامه) استفاده کنید.
خروجی مشابه زیر تولید می‐کند:
UNIT LOAD ACTIVE SUB DESCRIPTION sys-module-fuse.device loaded active plugged /sys/module/fuse -.mount loaded active mounted Root Mount boot-efi.mount loaded active mounted /boot/efi systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running Login Service ● user@1000.service loaded failed failed User Manager for UID 1000 ... systemd-tmpfiles-clean.timer loaded active waiting Daily Cleanup of Temporary Directories LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 123 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
در صورتی که ترمینال پشتیبانی کند، سربرگ و آخرین واحد از یک نوع مشخص خط‐زیرین (underline) می‐شوند. یک نقطه رنگی در کنار سرویس‐هایی که ماسک شده‐اند، پیدا نشده‐اند یا به نحوی با شکست مواجه شده‐اند نمایش داده می‐شود.
ستون LOAD وضعیت بارگذاری را نشان می‐دهد که یکی از مقادیر loaded، not-found، bad-setting، error، masked است. ستون ACTIVE وضعیت کلی واحد را نشان می‐دهد که یکی از موارد زیر است:
جدول 1. وضعیتهای ACTIVE واحد
| وضعیت | توضیحات |
| active | شروع‐شده، مقید‐شده (bound)، متصل‐شده (plugged in) و غیره، بسته به نوع واحد. |
| inactive | متوقف‐شده، رها‐شده، جدا‐شده و غیره، بسته به نوع واحد. |
| failed | مشابه inactive، اما واحد به نحوی با شکست مواجه شده است (پردازش هنگام خروج کد خطا بازگردانده، کرش کرده، زمان یک عملیات به پایان رسیده یا پس از راهاندازیهای مجدد بیش از حد). |
| activating | در حال تغییر از inactive به active. |
| deactivating | در حال تغییر از active به inactive. |
| maintenance | واحد در وضعیت inactive است و یک عملیات نگهداری در جریان است. |
| reloading | واحد در وضعیت active است و در حال بارگذاری مجدد پیکربندی خود می‐باشد. |
| refreshing | واحد در وضعیت active است و یک مانت (mount) جدید در فضای نام آن در حال فعالسازی است. |
ستون SUB وضعیت دقیق وابسته به نوع واحد را نشان می‐دهد، مقادیر ممکن بسته به نوع واحد متفاوت است. فهرست وضعیت‐های ممکن LOAD، ACTIVE و SUB ثابت نیست و نسخه‐های جدید systemd ممکن است مقادیری را اضافه یا حذف کنند.
systemctl --state=help
می‐توان از این دستور برای نمایش مجموعه فعلی مقادیر مجاز استفاده کرد.
این دستور پیش‐فرض است.
list-automounts [PATTERN...]
WHAT WHERE MOUNTED IDLE TIMEOUT UNIT /dev/sdb1 /mnt/test no 120s mnt-test.automount binfmt_misc /proc/sys/fs/binfmt_misc yes 0 proc-sys-fs-binfmt_misc.automount 2 automounts listed.
همچنین ببینید: --show-types، --all و --state=.
اضافه شده در نسخه 252.
list-paths [PATTERN...]
PATH CONDITION UNIT ACTIVATES /run/systemd/ask-password DirectoryNotEmpty systemd-ask-password-plymouth.path systemd-ask-password-plymouth.service /run/systemd/ask-password DirectoryNotEmpty systemd-ask-password-wall.path systemd-ask-password-wall.service /var/cache/cups/org.cups.cupsd PathExists cups.path cups.service 3 paths listed.
همچنین ببینید: --show-types، --all و --state=.
اضافه شده در نسخه 254.
list-sockets [PATTERN...]
LISTEN UNIT ACTIVATES kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service /dev/rfkill systemd-rfkill.socket systemd-rfkill.service ... 5 sockets listed.
توجه: به دلیل اینکه آدرس‐ها ممکن است شامل فاصله باشند، این خروجی برای پردازش برنامهنویسی مناسب نیست.
همچنین ببینید: --show-types، --all و --state=.
اضافه شده در نسخه 202.
list-timers [PATTERN...]
NEXT LEFT LAST PASSED UNIT ACTIVATES - - Thu 2017-02-23 13:40:29 EST 3 days ago ureadahead-stop.timer ureadahead-stop.service Sun 2017-02-26 18:55:42 EST 1min 14s left Thu 2017-02-23 13:54:44 EST 3 days ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Sun 2017-02-26 20:37:16 EST 1h 42min left Sun 2017-02-26 11:56:36 EST 6h ago apt-daily.timer apt-daily.service Sun 2017-02-26 20:57:49 EST 2h 3min left Sun 2017-02-26 11:56:36 EST 6h ago snapd.refresh.timer snapd.refresh.service
NEXT زمان اجرای بعدی تایمر را نشان می‐دهد.
LEFT مدت زمان باقی‐مانده تا اجرای بعدی تایمر را نشان می‐دهد.
LAST آخرین باری را که تایمر اجرا شده است نشان می‐دهد.
PASSED مدت زمان سپری‐شده از آخرین اجرای تایمر را نشان می‐دهد.
UNIT نام تایمر را نشان می‐دهد.
ACTIVATES نام سرویسی را که تایمر هنگام اجرا فعال می‐کند نشان می‐دهد.
همچنین ببینید: --all و --state=.
اضافه شده در نسخه 209.
is-active PATTERN...
is-failed [PATTERN...]
اضافه شده در نسخه 197.
status [PATTERN...|PID...]]
این دستور برای تولید خروجی خوانا برای انسان در نظر گرفته شده است. اگر به دنبال خروجی قابل تجزیه توسط رایانه هستید، به جای آن از show استفاده کنید. به طور پیش‐فرض، این تابع تنها 10 خط خروجی را نشان می‐دهد و خطوط را کوتاه می‐کند تا در پنجره ترمینال جا شوند. این رفتار با گزینه‐های --lines و --full قابل تغییر است. علاوه بر این، دستورات journalctl --unit=NAME یا journalctl --user-unit=NAME از فیلتر مشابهی برای پیام‐ها استفاده می‐کنند و ممکن است راحت‐تر باشند.
توجه داشته باشید که این عملیات تنها وضعیت زمان اجرا (runtime) را نشان می‐دهد، یعنی اطلاعات مربوط به اجرای فعلی واحد (اگر در حال اجرا باشد) یا جدیدترین اجرای آن (اگر دیگر اجرا نمی‐شود و از حافظه آزاد نشده باشد). اطلاعات مربوط به اجراهای قبلی، اجراهای بوت‐های قبلی سیستم، یا اجراهای پیشینی که از حافظه پاک شده‐اند را می‐توان از طریق journalctl --unit= به دست آورد.
سامانه systemd واحدها را بر حسب نیاز به صورت ضمنی بارگذاری می‐کند، بنابراین اجرای صرف دستور status تلاش خواهد کرد فایلی را بارگذاری کند. بنابراین این دستور برای تعیین اینکه آیا چیزی از قبل بارگذاری شده بوده یا خیر مفید نیست. همچنین در صورتی که دلیلی برای نگه داشتن واحد در حافظه وجود نداشته باشد، واحدها ممکن است بلافاصله پس از اتمام عملیات از حافظه خارج شوند.
مثال 1. خروجی نمونه از systemctl status
$ systemctl status bluetooth
● bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago
Docs: man:bluetoothd(8)
Main PID: 930 (bluetoothd)
Status: "Running"
Tasks: 1
Memory: 648.0K
CPU: 435ms
CGroup: /system.slice/bluetooth.service
└─930 /usr/lib/bluetooth/bluetoothd
Jan 12 10:46:45 example.com bluetoothd[8900]: Not enough free handles to register service
Jan 12 10:46:45 example.com bluetoothd[8900]: Current Time Service could not be registered
Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output error (5)
نقطه ("●") در ترمینال‐های پشتیبانی‐شده با رنگ‐آمیزی، خلاصه وضعیت واحد را در یک نگاه نشان می‐دهد. همراه با رنگ، شکل آن نیز بر اساس وضعیت تغییر می‐کند: "inactive" یا "maintenance" یک دایره توخالی سفید ("○") است، "active" یک نقطه سبز ("●") است، "deactivating" یک نقطه سفید است، "failed" یا "error" یک علامت ضربدر قرمز ("×") است، و "reloading" یا "refreshing" یک فلش دایره‐ای ساعت‐گرد سبز ("↻") است.
سطر "Loaded:" در خروجی، در صورتی که واحد در حافظه بارگذاری شده باشد مقدار "loaded" را نشان خواهد داد. سایر مقادیر ممکن برای "Loaded:" عبارتند از: "error" اگر در بارگذاری آن مشکلی پیش آمده باشد، "not-found" اگر هیچ فایل واحدی برای این واحد یافت نشود، "bad-setting" اگر یک تنظیم ضروری در فایل واحد قابل تجزیه نباشد، و "masked" اگر فایل واحد ماسک شده باشد. این سطر همراه با نمایش مسیر فایل واحد، وضعیت فعال‐سازی (enablement) را نیز نشان می‐دهد. واحدهای فعال‐شده در شبکه وابستگی بین واحدها گنجانده می‐شوند و بدین ترتیب در هنگام بوت یا از طریق فرم دیگری از فعال‐سازی شروع به کار می‐کنند. جدول کامل وضعیت‐های فعال‐سازی ممکن — از جمله تعریف "masked" — را در مستندات دستور is-enabled مشاهده فرمایید.
سطر "Active:" وضعیت فعالیت را نشان می‐دهد. مقدار آن معمولاً "active" یا "inactive" است. فعال بودن بسته به نوع واحد می‐تواند به معنای شروع‐شده، مقید‐شده، متصل‐شده و غیره باشد. واحد همچنین ممکن است در حال تغییر وضعیت باشد و وضعیت "activating" یا "deactivating" را گزارش کند. وضعیت خاص "failed" زمانی وارد می‐شود که سرویس به نحوی با شکست مواجه شده باشد، مانند کرش کردن، خروج با کد خطا یا به پایان رسیدن مهلت زمانی (timeout). در صورت ورود به وضعیت failed، علت آن برای ارجاع بعدی در لاگ ثبت خواهد شد.
show [PATTERN...|JOB...]
بسیاری از ویژگی‐های نمایش داده شده توسط systemctl show مستقیماً با تنظیمات پیکربندی مدیر سیستم و سرویس و فایل‐های واحد آن مطابقت دارند. توجه داشته باشید که ویژگی‐های نشان داده شده توسط این دستور به طور کلی نسخه‐های سطح پایین‐تر و نرمال‐شده تنظیمات پیکربندی اصلی هستند و علاوه بر پیکربندی، وضعیت زمان اجرا را نیز نشان می‐دهند. به عنوان مثال، ویژگی‐های نمایش‐داده‐شده برای واحدهای سرویس شامل شناسه پردازش اصلی فعلی سرویس به عنوان "MainPID" (که وضعیت زمان اجرا است) می‐باشد، و تنظیمات زمانی همیشه به عنوان ویژگی‐هایی با پسوند "...USec" نمایش داده می‐شوند حتی اگر گزینه پیکربندی منطبق به "...Sec" ختم شود، زیرا میکروثانیه واحد زمانی نرمال‐شده است که در داخل توسط مدیر سیستم و سرویس استفاده می‐شود.
برای جزئیات بیشتر درباره بسیاری از این ویژگی‐ها، به مستندات رابط D-Bus پشتیبان این ویژگی‐ها در org.freedesktop.systemd1(5) مراجعه کنید.
cat PATTERN...
اضافه شده در نسخه 209.
help PATTERN...|PID...
اضافه شده در نسخه 185.
list-dependencies [UNIT...]
واحدهای نمایشدادهشده در صورت تعیین گزینههای --type= و --state= به طور اضافی فیلتر میشوند. توجه داشته باشید که در این صورت امکان استفاده از ساختار درختی وجود نخواهد داشت، بنابراین --plain به طور ضمنی اعمال میشود.
به طور پیشفرض، فقط واحدهای هدف (target) به صورت بازگشتی بسط داده میشوند. هنگامی که --all ارسال شود، تمام واحدهای دیگر نیز به صورت بازگشتی بسط مییابند.
از گزینههای --reverse، --after و --before میتوان برای تغییر انواع وابستگیهای نمایشدادهشده استفاده کرد.
توجه داشته باشید که این دستور فقط واحدهایی را فهرست میکند که در حال حاضر توسط مدیر سرویس در حافظه بارگذاری شدهاند. به ویژه، این دستور برای دریافت یک فهرست جامع از تمام وابستگیهای معکوس روی یک واحد خاص مناسب نیست، زیرا وابستگیهای تعریفشده توسط واحدهایی را که در حال حاضر بارگذاری نشدهاند فهرست نمیکند.
اضافه شده در نسخه 198.
start PATTERN...
توجه داشته باشید که الگوهای تطبیق واحد (glob) به نام واحدهایی که در حال حاضر در حافظه هستند بسط مییابند. واحدهایی که فعال نیستند و در وضعیت شکستخورده قرار ندارند، معمولاً در حافظه نیستند و با هیچ الگویی مطابقت نخواهند داشت. علاوه بر این، در مورد واحدهای نمونهسازیشده، systemd اغلب تا زمانی که نمونه راهاندازی نشده باشد از نام نمونه آگاه نیست. بنابراین، استفاده از الگوهای تطبیق با start کاربرد محدودی دارد. همچنین نامهای مستعار ثانویه واحدها در نظر گرفته نمیشوند.
گزینه --all ممکن است برای اعمال عملیات بر روی واحدهای غیرفعالی که توسط سایر واحدهای بارگذاریشده ارجاع داده شدهاند نیز استفاده شود. توجه داشته باشید که این با کار بر روی "همه" واحدهای ممکن یکسان نیست، زیرا همانطور که در پاراگراف قبلی توضیح داده شد، چنین فهرستی نامشخص است. با این وجود، systemctl start --all GLOB ممکن است در صورتی که تمام واحدهای منطبق بر الگو توسط هدفی کشیده شده باشند که مشخص است بارگذاری شده، مفید باشد.
stop PATTERN...
در صورتی که واحد وجود نداشته باشد یا توقف واحد ممنوع باشد (به RefuseManualStop= در systemd.unit(5) مراجعه کنید)، این دستور با شکست مواجه میشود. اما اگر هر یک از دستورات پیکربندیشده برای متوقف کردن واحد (مانند ExecStop= و غیره) با شکست مواجه شوند، این دستور با شکست مواجه نخواهد شد، زیرا مدیر سیستم همچنان واحد را به اجبار خاتمه میدهد.
اگر واحدی که متوقف میشود همچنان بتواند توسط واحدهای دیگر راهاندازی (trigger) شود، هشداری حاوی نام واحدهای راهانداز نمایش داده میشود. --no-warn میتواند برای خاموش کردن این هشدار استفاده شود.
reload PATTERN...
این دستور نباید با دستور daemon-reload اشتباه گرفته شود.
restart PATTERN...
توجه داشته باشید که راهاندازی مجدد یک واحد با این دستور لزوماً تمام منابع واحد را قبل از شروع مجدد آن پاک نمیکند. به عنوان مثال، قابلیت ذخیره توصیفکننده فایل به ازای هر سرویس (به FileDescriptorStoreMax= در systemd.service(5) مراجعه کنید) تا زمانی که واحد یک کار در انتظار داشته باشد دستنخورده باقی میماند، و تنها زمانی پاک میشود که واحد کاملاً متوقف شده و هیچ کاری در انتظار نباشد. اگر هدف این است که مخزن توصیفکننده فایل نیز در طول عملیات راهاندازی مجدد پاک شود، باید یک دستور صریح systemctl stop و به دنبال آن systemctl start صادر شود.
try-restart PATTERN...
reload-or-restart PATTERN...
این دستور در صورت استفاده همراه با --marked عملکرد کمی متفاوت دارد، به توضیحات آن مراجعه کنید.
try-reload-or-restart PATTERN...
اضافه شده در نسخه 229.
isolate UNIT
این دستور خطرناک است، زیرا فوراً فرآیندهایی را که در هدف جدید فعال نشدهاند متوقف میکند، که احتمالاً شامل محیط گرافیکی یا ترمینالی است که در حال حاضر استفاده میکنید.
توجه داشته باشید که این عملیات فقط روی واحدهایی مجاز است که AllowIsolate= در آنها فعال باشد. برای جزئیات به systemd.unit(5) مراجعه کنید.
kill PATTERN...
clean PATTERN...
جدول 2. مقادیر ممکن برای --what=
| مقدار | تنظیمات واحد |
| "runtime" | RuntimeDirectory= |
| "state" | StateDirectory= |
| "cache" | CacheDirectory= |
| "logs" | LogsDirectory= |
| "configuration" | ConfigurationDirectory= |
| "fdstore" | FileDescriptorStorePreserve= |
| "all" | تمام موارد فوق |
| "help" | نمایش مقادیر پشتیبانیشده و خروج |
اضافه شده
در نسخه 243.
freeze PATTERN...
منجمد کردن واحد باعث میشود تمام فرآیندهای موجود در cgroup متناظر با واحد به حالت تعلیق درآیند. تعلیق به این معنی است که فرآیندهای واحد تا زمان رفع انجماد برای اجرا روی پردازنده زمانبندی نخواهند شد. توجه داشته باشید که این دستور تنها در سیستمهایی که از سلسلهمراتب یکپارچه cgroup استفاده میکنند پشتیبانی میشود. واحد درست قبل از اجرای کاری علیه آن، به عنوان مثال قبل از توقف واحد، به طور خودکار از انجماد خارج میشود.
اضافه شده در نسخه 246.
thaw PATTERN...
این عملیات معکوس دستور freeze است و اجرای فرآیندها را در cgroup واحد از سر میگیرد.
اضافه شده در نسخه 246.
set-property UNIT PROPERTY=VALUE...
مثال: systemctl set-property foobar.service CPUWeight=200
اگر به نظر برسد که واحد مشخصشده غیرفعال است، تغییرات تنها همانطور که پیشتر توضیح داده شد روی دیسک ذخیره میشوند، بنابراین هنگام راهاندازی واحد مؤثر خواهند بود.
توجه داشته باشید که این دستور امکان تغییر چندین ویژگی را به طور همزمان فراهم میکند که نسبت به تنظیم جداگانه آنها ارجح است.
مثال: systemctl set-property foobar.service CPUWeight=200 MemoryMax=2G IPAccounting=yes
مانند تنظیمات پیکربندی فایل واحد، انتساب یک مقدار خالی معمولاً ویژگی را به مقادیر پیشفرض آن بازنشانی میکند.
مثال: systemctl set-property avahi-daemon.service IPAddressDeny=
اضافه شده در نسخه 206.
bind UNIT PATH [PATH]
توجه داشته باشید که این گزینه در حال حاضر فقط برای واحدهایی پشتیبانی میشود که در یک فضای نام نصب اجرا میشوند (مثلاً با RootImage=، PrivateMounts= و غیره). این دستور از اتصال دایرکتوریها، فایلهای معمولی، گرههای دستگاه، گرههای سوکت AF_UNIX و همچنین FIFOها پشتیبانی میکند. این اتصال گذرا (ephemeral) است و به محض خروج فرآیند فعلی واحد، لغو میشود. توجه داشته باشید که فضای نام ذکر شده در اینجا که اتصال مانت به آن اضافه خواهد شد، فضایی است که فرآیند سرویس اصلی در آن اجرا میشود. فرآیندهای دیگر (آنهایی که توسط ExecReload=، ExecStartPre= و غیره اجرا میشوند) در فضاهای نام متمایزی اجرا میشوند.
در صورت پشتیبانی هسته، هرگونه مانت قبلی روی هدف انتخابشده با مانت جدید جایگزین خواهد شد. در صورت عدم پشتیبانی، هرگونه مانت قبلی روی آن پوشانده میشود، اما سنجاقشده و غیرقابل دسترس باقی میماند.
اضافه شده در نسخه 248.
mount-image UNIT IMAGE [PATH [PARTITION_NAME:MOUNT_OPTIONS]]
توجه داشته باشید که این گزینه در حال حاضر فقط برای واحدهایی پشتیبانی میشود که در یک فضای نام نصب اجرا میشوند (یعنی با RootImage=، PrivateMounts= و غیره). توجه داشته باشید که فضای نام ذکر شده در اینجا که مانت ایمیج به آن اضافه خواهد شد، فضایی است که فرآیند سرویس اصلی در آن اجرا میشود. فرآیندهای دیگر (آنهایی که توسط ExecReload=، ExecStartPre= و غیره اجرا میشوند) در فضاهای نام متمایزی اجرا میشوند.
در صورت پشتیبانی هسته، هرگونه مانت قبلی روی هدف انتخابشده با مانت جدید جایگزین خواهد شد. در صورت عدم پشتیبانی، هر مانت قبلی روی آن پوشانده میشود، اما سنجاقشده و غیرقابل دسترسی باقی خواهد ماند.
مثال:
systemctl mount-image foo.service /tmp/img.raw /var/lib/image root:ro,nosuid
systemctl mount-image --mkdir bar.service /tmp/img.raw /var/lib/baz/img
اضافه شده در نسخه 248.
service-log-level SERVICE [LEVEL]
اگر آرگومان اختیاری LEVEL ارائه شود، سطح لاگ فعلی سرویس را به LEVEL تغییر میدهد. سطح لاگ باید یک سطح لاگ معمول syslog باشد، یعنی مقداری در محدوده 0...7 یا یکی از رشتههای emerg، alert، crit، err، warning، notice، info، debug؛ برای جزئیات به syslog(3) مراجعه فرمایید.
سرویس باید ویژگی مناسب BusName=destination را داشته باشد و همچنین رابط عمومی org.freedesktop.LogControl1(5) را پیادهسازی کرده باشد. (ابزار systemctl از پروتکل عمومی D-Bus برای دسترسی به رابط org.freedesktop.LogControl1.LogLevel برای نام D-Bus destination استفاده خواهد کرد.)
اضافه شده در نسخه 247.
service-log-target SERVICE [TARGET]
اگر آرگومان اختیاری TARGET ارائه شود، مقصد لاگ فعلی سرویس را به TARGET تغییر میدهد. مقصد لاگ باید یکی از رشتههای زیر باشد: console (برای خروجی لاگ به جریان خطای استاندارد سرویس)، kmsg (برای خروجی لاگ به بافر لاگ هسته)، journal (برای خروجی لاگ به systemd-journald.service(8) با استفاده از پروتکل بومی ژورنال)، syslog (برای خروجی لاگ به سوکت کلاسیک syslog در /dev/log)، null (برای عدم خروجی هیچگونه لاگ) یا auto (برای یک انتخاب تعیینشده به صورت خودکار، که در صورت فراخوانی تعاملی سرویس معمولاً معادل console و در غیر این صورت معادل journal یا syslog است).
برای اکثر سرویسها، فقط زیرمجموعه کوچکی از مقاصد لاگ منطقی است. به ویژه، اکثر سرویسهای "معمولی" فقط باید console، journal و null را پیادهسازی کنند. هر چیز دیگری فقط برای سرویسهای سطح پایینی مناسب است که در مراحل اولیه بوت، قبل از استقرار ثبت گزارش مناسب، فعال هستند.
سرویس باید ویژگی مناسب BusName=destination را داشته باشد و همچنین رابط عمومی org.freedesktop.LogControl1(5) را پیادهسازی کند. (ابزار systemctl از پروتکل عمومی D-Bus برای دسترسی به رابط org.freedesktop.LogControl1.LogLevel برای نام D-Bus destination استفاده خواهد کرد.)
اضافه شده در نسخه 247.
reset-failed [PATTERN...]
علاوه بر بازنشانی وضعیت "failed" یک واحد، این دستور ویژگیهای متعدد دیگری را نیز به ازای هر واحد بازنشانی میکند: شمارنده محدودیت نرخ شروع (start rate limit) تمام انواع واحدها به صفر بازنشانی میشود، همانطور که شمارنده راهاندازی مجدد واحدهای سرویس نیز به صفر برمیگردد. بنابراین، اگر محدودیت شروع یک واحد (همانطور که با StartLimitIntervalSec=/StartLimitBurst= پیکربندی شده است) فعال شده باشد و واحد از راهاندازی مجدد امتناع ورزد، از این دستور استفاده کنید تا دوباره قابل راهاندازی شود.
whoami [PID...]
اضافه شده در نسخه 254.
دستورات فایلهای واحد
list-unit-files [PATTERN...]
برخلاف list-units، این دستور علاوه بر واحدهای صریحاً نمونهسازیشده، واحدهای الگو را نیز فهرست میکند.
اضافه شده در نسخه 233.
enable UNIT..., enable PATH...
این دستور یا نامهای معتبر واحد را انتظار دارد (که در این صورت دایرکتوریهای مختلف فایل واحد به طور خودکار برای یافتن نامهای مناسب جستجو میشوند)، یا مسیرهای مطلق به فایلهای واحد را میپذیرد (که در این حالت این فایلها مستقیماً خوانده میشوند). اگر فایل واحد مشخصشده در خارج از پوشههای معمولی فایل واحد قرار داشته باشد، یک پیوند نمادین اضافی ایجاد میشود که آن را به مسیر پیکربندی واحد پیوند میدهد و بدین ترتیب اطمینان حاصل میشود که در صورت درخواست توسط دستوراتی مانند start پیدا خواهد شد. سیستم فایلی که فایلهای واحد پیوندشده در آن قرار دارند باید هنگام شروع systemd در دسترس باشد (برای مثال هر چیزی زیر /home/ یا /var/ مجاز نیست، مگر اینکه آن پوشهها روی سیستم فایل ریشه قرار داشته باشند).
این دستور عملیات انجامشده روی سیستم فایل را چاپ میکند. این خروجی با ارسال --quiet میتواند خاموش شود.
توجه داشته باشید که این عملیات تنها پیوندهای نمادین پیشنهادی در بخش [Install] فایلهای واحد را ایجاد میکند. اگرچه این دستور روش توصیهشده برای دستکاری دایرکتوری پیکربندی واحد است، اما مدیر سیستم آزاد است با قرار دادن یا حذف پیوندهای نمادین در زیر این دایرکتوری، تغییرات اضافی را به صورت دستی اعمال کند. این به ویژه برای ایجاد پیکربندیهایی که با نصب پیشفرض پیشنهادی تفاوت دارند مفید است. در این حالت، مدیر سیستم باید مطمئن شود که در صورت لزوم دستور daemon-reload را به صورت دستی فراخوانی کند تا تغییرات اعمال شوند.
هنگام استفاده از این عملیات روی واحدهای بدون اطلاعات نصب، هشداری در این باره نشان داده میشود. --no-warn میتواند برای سرکوب این هشدار استفاده شود.
فعالسازی واحدها نباید با شروع (فعالکردن در زمان اجرا) واحدها که توسط دستور start انجام میشود اشتباه گرفته شود. فعالسازی و راهاندازی واحدها مستقل از یکدیگرند: واحدها ممکن است بدون راهاندازی فعال شوند و بدون فعالسازی راهاندازی گردند. فعالسازی صرفاً واحد را به مکانهای مختلف پیشنهادی قلاب میکند (مثلاً تا واحد به طور خودکار هنگام بوت یا هنگام اتصال نوع خاصی از سختافزار شروع شود). راهاندازی در واقع فرآیند دیمن را اجرا میکند (در مورد واحدهای سرویس)، یا سوکت را متصل میکند (در مورد واحدهای سوکت) و غیره.
بسته به اینکه --system، --user، --runtime یا --global مشخص شده باشد، این دستور واحد را برای سیستم، فقط برای کاربر فراخوان، فقط برای این بوت سیستم، یا برای تمام ورودهای آینده همه کاربران فعال میکند. توجه داشته باشید که در حالت آخر، هیچ پیکربندی دیمن systemd مجدداً بارگذاری نمیشود.
استفاده از enable روی واحدهای ماسکشده پشتیبانی نمیشود و منجر به خطا خواهد شد.
disable UNIT...
این دستور فقط نامهای معتبر واحد را انتظار دارد و مسیرهای فایلهای واحد را نمیپذیرد.
علاوه بر واحدهای مشخصشده به عنوان آرگومان، تمام واحدهایی که در تنظیم Also= موجود در بخش [Install] هر یک از فایلهای واحد مورد عمل فهرست شدهاند نیز غیرفعال میشوند.
این دستور پس از اتمام عملیات، پیکربندی مدیر سیستم را به صورت ضمنی مجدداً بارگذاری میکند. توجه داشته باشید که این دستور به صورت خودکار واحدهایی را که غیرفعال میشوند متوقف نمیکند. در صورت تمایل، این دستور را با سوییچ --now ترکیب کنید، یا بعداً دستور stop را با آرگومانهای مناسب فراخوانی فرمایید.
این دستور اطلاعات مربوط به عملیات انجامشده روی سیستم فایل (حذف پیوندهای نمادین) را چاپ میکند. این خروجی با ارسال --quiet قابل خاموش کردن است.
اگر واحدی غیرفعال شود اما واحدهای راهانداز (triggering) آن هنوز فعال باشند، هشداری حاوی نام واحدهای راهانداز نمایش داده میشود. --no-warn میتواند برای خاموش کردن هشدار استفاده شود.
هنگامی که این دستور با --user استفاده میشود، واحدهای در حال ویرایش ممکن است هنوز در محدوده سراسری (global) فعال باشند، و بنابراین حتی پس از غیرفعالسازی موفقیتآمیز در محدوده کاربر، به طور خودکار شروع شوند. در این حالت، هشداری درباره آن نشان داده میشود که با استفاده از --no-warn میتوان آن را نادیده گرفت.
این دستور گزینههای --system، --user، --runtime، --global و --no-warn را به روشی مشابه enable رعایت میکند.
اضافه شده در نسخه 238.
reenable UNIT...
این دستور پس از اتمام عملیات، پیکربندی مدیر سیستم را به طور ضمنی مجدداً بارگذاری میکند. توجه داشته باشید که این دستور به صورت خودکار واحدهای غیرفعالشده را مجدداً راهاندازی نمیکند. در صورت تمایل، یا این دستور را با سوییچ --now ترکیب کنید، یا بعداً دستور try-restart را با آرگومانهای مناسب فراخوانی کنید.
اضافه شده در نسخه 238.
preset UNIT...
از --preset-mode= برای کنترل اینکه آیا واحدها باید فعال و غیرفعال شوند، یا فقط فعال شوند، یا فقط غیرفعال شوند استفاده کنید.
اگر واحد فاقد اطلاعات نصب باشد، توسط این دستور نادیده گرفته میشود. UNIT باید نام واقعی واحد باشد، هرگونه نام مستعار نادیده گرفته میشود.
برای اطلاعات بیشتر در مورد قالب خطمشی پیشتنظیم، به systemd.preset(5) مراجعه فرمایید.
اضافه شده در نسخه 238.
preset-all
از --preset-mode= برای کنترل اینکه آیا واحدها باید فعال و غیرفعال شوند، یا فقط فعال، یا فقط غیرفعال شوند استفاده کنید.
اضافه شده در نسخه 215.
is-enabled UNIT...
جدول 3. خروجی is-enabled
| نام | توضیحات | کد خروج |
| "enabled" | از طریق پیوندهای نمادین .wants/، .requires/ یا Alias= فعال شده است (به طور دائم در /etc/systemd/system/ یا به طور موقت در /run/systemd/system/). | 0 |
| "enabled-runtime" | ||
| "linked" | از طریق یک یا چند پیوند نمادین به فایل واحد در دسترس قرار گرفته است (به طور دائم در /etc/systemd/system/ یا موقتی در /run/systemd/system/)، اگرچه ممکن است فایل واحد خارج از مسیر جستجوی فایلهای واحد قرار داشته باشد. | > 0 |
| "linked-runtime" | ||
| "alias" | نام یک نام مستعار است (پیوند نمادین به فایل واحد دیگر). | 0 |
| "masked" | به طور کامل غیرفعال شده است، به طوری که هرگونه عملیات شروع بر روی آن با شکست مواجه میشود (به طور دائم در /etc/systemd/system/ یا موقت در /run/systemd/system/). | > 0 |
| "masked-runtime" | ||
| "static" | فایل واحد فعال نشده است و هیچ پیشبینی برای فعالسازی در بخش [Install] فایل واحد ندارد. | 0 |
| "indirect" | خود فایل واحد فعال نشده است، اما دارای تنظیم غیرخالی Also= در بخش [Install] است که فایلهای واحد دیگری را که ممکن است فعال باشند فهرست میکند، یا دارای نام مستعار تحت نام دیگری از طریق پیوند نمادین است که در Also= مشخص نشده است. برای فایلهای الگوی واحد، نمونهای غیر از نمونه مشخصشده در DefaultInstance= فعال است. | 0 |
| "disabled" | فایل واحد فعال نشده است، اما شامل بخش [Install] همراه با دستورالعملهای نصب است. | > 0 |
| "generated" | فایل واحد به طور پویا از طریق یک ابزار مولد (generator) تولید شده است. به systemd.generator(7) مراجعه کنید. فایلهای واحد تولیدشده ممکن است فعال نشوند، آنها به طور ضمنی توسط مولد خود فعال میشوند. | 0 |
| "transient" | فایل واحد به صورت پویا با API زمان اجرا ایجاد شده است. واحدهای گذرا ممکن است فعال نشوند. | 0 |
| "bad" | فایل واحد نامعتبر است یا خطای دیگری روی داده است. توجه داشته باشید که is-enabled در عمل این وضعیت را بازنمیگرداند، بلکه یک پیام خطا چاپ میکند. با این حال، فهرست فایل واحد ارائهشده توسط list-unit-files ممکن است آن را نشان دهد. | > 0 |
| "not-found" | فایل واحد وجود ندارد. | 4 |
اضافه شده
در نسخه 238.
mask UNIT...
توجه داشته باشید که این کار یک پیوند نمادین به نام واحد در /etc/systemd/system/ (در صورتی که --runtime مشخص نشده باشد) یا در /run/systemd/system/ (در صورت تعیین --runtime) ایجاد میکند. اگر یک فایل واحد منطبق از قبل زیر این دایرکتوریها وجود داشته باشد، این عملیات با شکست مواجه خواهد شد. این بدان معناست که این عملیات اساساً برای ماسک کردن واحدهای ارائهشده توسط توزیع مناسب است (زیرا آنها در /usr/lib/systemd/system/ عرضه میشوند و نه در دو پوشه ذکرشده)، اما معمولاً برای واحدهایی که به صورت محلی ایجاد شدهاند کار نمیکند (زیرا آنها دقیقاً در همان دو پوشه فوق قرار دارند). محدودیتهای مشابهی برای حالت --user اعمال میشود، که در این حالت دایرکتوریها زیر پوشه خانگی کاربر قرار دارند.
اگر واحدی ماسک شود اما واحدهای راهانداز آن همچنان فعال باشند، هشداری شامل نام واحدهای راهانداز نمایش داده میشود. --no-warn میتواند برای سرکوب این هشدار استفاده شود.
اضافه شده در نسخه 238.
unmask UNIT...
اضافه شده در نسخه 238.
link PATH...
اضافه شده در نسخه 233.
revert UNIT...
در عمل، از این دستور میتوان برای بازگردانی تمام تغییرات ایجادشده با systemctl edit، systemctl set-property و systemctl mask استفاده کرد و فایل واحد اصلی با تنظیمات اولیهاش دوباره اثرگذار خواهد شد.
اضافه شده در نسخه 230.
add-wants TARGET UNIT..., add-requires TARGET UNIT...
این دستور گزینههای --system، --user، --runtime و --global را به روشی مشابه enable رعایت میکند.
اضافه شده در نسخه 217.
edit UNIT...
بسته به اینکه --system (پیشفرض)، --user، یا --global مشخص شده باشد، این دستور بر روی فایلهای واحد سیستم، فایلهای واحد برای کاربر فراخوان، یا فایلهای واحد مشترک بین تمام کاربران عمل میکند.
ویرایشگر متن (به بخش "محیط" در ادامه مراجعه کنید) بر روی فایلهای موقتی باز میشود که در صورت خروج موفقیتآمیز ویرایشگر در محل واقعی نوشته خواهند شد. پس از اتمام ویرایش، پیکربندی مجدداً بارگذاری میشود که معادل systemctl daemon-reload --system یا systemctl daemon-reload --user است. برای edit --global، بارگذاری مجدد انجام نمیشود و ویرایشها فقط برای ورودهای بعدی (یا پس از درخواست بارگذاری مجدد به روشی دیگر) اعمال خواهند شد.
اگر --full مشخص شود، یک جایگزین کامل برای فایل واحد اصلی ایجاد یا ویرایش میشود. در غیر این صورت، یک فایل drop-in ایجاد یا ویرایش خواهد شد.
اگر --drop-in= مشخص شود، نام فایل drop-in دادهشده به جای نام پیشفرض override.conf استفاده خواهد شد.
واحد باید از قبل وجود داشته باشد، یعنی فایل اصلی واحد آن باید موجود باشد. اگر --force مشخص شده باشد، این الزام نادیده گرفته میشود و یک واحد جدید ممکن است ایجاد شود (با --full)، یا یک drop-in برای یک واحد ناموجود ساخته شود.
اگر --runtime مشخص شود، تغییرات به طور موقت در /run/ اعمال میشوند و در راهاندازی مجدد بعدی از بین خواهند رفت.
اگر --stdin مشخص شود، محتویات جدید از ورودی استاندارد خوانده میشوند. در این حالت، محتویات قبلی فایل دور ریخته میشوند.
اگر فایل موقت پس از خروج از ویرایشگر خالی باشد، تغییرات واحد لغو میشوند.
توجه داشته باشید که این دستور نمیتواند برای ویرایش از راه دور واحدها استفاده شود و نمیتوانید واحدهایی را که در /etc/ هستند به طور موقت در /run/ ویرایش کنید، زیرا اولویت با /etc/ است.
اضافه شده در نسخه 218.
get-default
اضافه شده در نسخه 205.
set-default TARGET
اضافه شده در نسخه 205.
دستورات ماشینها
list-machines [PATTERN...]
اضافه شده در نسخه 212.
دستورات کارها (Jobs)
list-jobs [PATTERN...]
هنگامی که با --after یا --before ترکیب شود، فهرست با اطلاعاتی درباره اینکه هر کار منتظر چه کار دیگری است و چه کارهای دیگری منتظر آن هستند تکمیل میشود، به توضیحات بالا مراجعه کنید.
اضافه شده در نسخه 233.
cancel [JOB...]
اضافه شده در نسخه 233.
دستورات متغیرهای محیطی
systemd از یک بلوک محیطی پشتیبانی میکند که به فرآیندهایی که مدیر سیستم اجرا میکند ارسال میشود. نام متغیرها میتواند شامل حروف ASCII، ارقام و کاراکتر زیرخط (underscore) باشد. نام متغیرها نمیتواند خالی باشد یا با یک رقم شروع شود. در مقادیر متغیرها، اکثر کاراکترها مجاز هستند، اما کل دنباله باید UTF-8 معتبر باشد. (توجه داشته باشید که کاراکترهای کنترلی مانند خط جدید (NL)، تب (TAB) یا کاراکتر اسکیپ (ESC)، همگی اسکی معتبر و در نتیجه UTF-8 معتبر هستند). طول کل بلوک محیطی به مقدار _SC_ARG_MAX تعریفشده توسط sysconf(3) محدود است.
show-environment
توجه داشته باشید که این دستور بلوک مؤثر را نشان میدهد، یعنی ترکیب متغیرهای محیطی پیکربندیشده از طریق فایلهای پیکربندی، مولدهای محیطی و از طریق IPC (یعنی از طریق set-environment که در زیر توضیح داده شده است). در لحظهای که یک فرآیند واحد منشعب میشود، این بلوک محیطی ترکیبی با متغیرهای محیطی به ازای هر واحد ترکیب میشود که در این دستور قابل مشاهده نیستند.
set-environment VARIABLE=VALUE...
توجه داشته باشید که این دستور روی یک بلوک محیطی مجزا از بلوک محیطی پیکربندیشده از پیکربندی مدیر سرویس و مولدهای محیطی عمل میکند. هر زمان که فرآیندی فراخوانی میشود، این دو بلوک با هم ترکیب شده (همچنین متغیرهای محیطی اختصاصی هر سرویس را در خود ادغام میکنند) و به آن منتقل میشوند. دستور show-environment ترکیب این بلوکها را نشان میدهد، به توضیحات بالا مراجعه کنید.
اضافه شده در نسخه 233.
unset-environment VARIABLE...
توجه داشته باشید که این دستور روی بلوک محیطی جداگانه از بلوک محیطی پیکربندیشده از تنظیمات مدیر سرویس و مولدهای محیطی عمل میکند. هر زمان فرآیندی اجرا شود، دو بلوک ترکیب شده و به آن منتقل میشوند. دستور show-environment ترکیب بلوکها را نشان میدهد. توجه داشته باشید که این بدان معناست که این دستور نمیتواند برای حذف متغیرهای محیطی تعریفشده در فایلهای پیکربندی مدیر سرویس یا از طریق مولدها استفاده شود.
اضافه شده در نسخه 233.
import-environment VARIABLE...
وارد کردن کل بلوک محیطی به ارث رسیده (فراخوانی این دستور بدون آرگومان) منسوخ شده است. یک پوسته دهها متغیر را تنظیم میکند که فقط به صورت محلی منطقی هستند و فقط برای فرآیندهایی که فرزند آن پوسته هستند در نظر گرفته شدهاند. چنین متغیرهایی در بلوک محیطی سراسری برای فرآیندهای دیگر گیجکننده خواهند بود.
اضافه شده در نسخه 209.
دستورات وضعیت مدیر سیستم
daemon-reload
این دستور نباید با دستور reload اشتباه گرفته شود.
daemon-reexec
log-level [LEVEL]
اضافه شده در نسخه 244.
log-target [TARGET]
اضافه شده در نسخه 244.
service-watchdogs [yes|no]
اضافه شده در نسخه 244.
دستورات سیستمی
is-system-running
از --wait برای صبر کردن تا زمان تکمیل فرآیند بوت قبل از چاپ وضعیت فعلی و بازگرداندن وضعیت خطای مناسب استفاده کنید. اگر --wait استفاده شود، وضعیتهای initializing یا starting گزارش نمیشوند، بلکه دستور تا زمان رسیدن به وضعیت بعدی (مانند running یا degraded) مسدود (block) خواهد ماند.
جدول 4. خروجی is-system-running
| نام | توضیحات | کد خروج |
| initializing | مراحل اولیه بوت، قبل از رسیدن به basic.target یا ورود به وضعیت maintenance. | > 0 |
| starting | مراحل پایانی بوت، قبل از اینکه صف کارها برای اولین بار بیکار شود، یا رسیدن به یکی از اهداف امداد (rescue). | > 0 |
| running | سیستم کاملاً عملیاتی و فعال است. | 0 |
| degraded | سیستم عملیاتی است اما یک یا چند واحد با شکست مواجه شدهاند. | > 0 |
| maintenance | هدف امداد (rescue) یا اضطراری (emergency) فعال است. | > 0 |
| stopping | مدیر سیستم در حال خاموش شدن است. | > 0 |
| offline | مدیر سیستم در حال اجرا نیست. به طور خاص، اگر برنامهای ناسازگار به عنوان مدیر سیستم (PID 1) اجرا شود، این وضعیت عملیاتی گزارش میشود. | > 0 |
| unknown | به دلیل کمبود منابع یا علت خطای دیگر، وضعیت عملیاتی قابل تعیین نیست. | > 0 |
اضافه شده
در نسخه 215.
default
rescue
emergency
halt
اگر با --force ترکیب شود، خاموش شدن تمام سرویسهای در حال اجرا نادیده گرفته میشود، اما تمام فرآیندها کشته شده و تمام سیستمهای فایل پیادهسازی (unmount) یا به صورت فقطخواندنی سوار میشوند و بلافاصله سیستم متوقف میگردد. اگر --force دو بار مشخص شود، عملیات فوراً بدون پایان دادن به هیچ فرآیندی یا پیاده کردن هیچ سیستم فایلی اجرا میشود. این کار ممکن است منجر به از دست رفتن دادهها شود. توجه داشته باشید هنگامی که --force دو بار مشخص شود، عملیات halt توسط خود systemctl اجرا میشود و با مدیر سیستم ارتباطی برقرار نمیگردد. این بدان معنی است که دستور حتی در صورت کرش کردن مدیر سیستم باید با موفقیت اجرا شود.
اگر با --when= ترکیب شود، خاموش شدن برای پس از برچسب زمانی دادهشده زمانبندی میشود. و --when=cancel خاموشسازی زمانبندیشده را لغو میکند.
poweroff
این دستور گزینههای --force و --when= را به روشی مشابه halt رعایت میکند.
reboot
این دستور عمدتاً معادل با systemctl start reboot.target --job-mode=replace-irreversibly --no-block است، اما همچنین یک پیام همگانی به تمام کاربران میفرستد. این دستور ناهمگام است؛ پس از صفبندی عملیات ریبوت بازمیگردد، بدون آنکه منتظر تکمیل آن بماند.
اگر سوییچ --reboot-argument= داده شود، به عنوان آرگومان اختیاری به فراخوانی سیستمی reboot(2) منتقل میشود.
گزینههای --boot-loader-entry=، --boot-loader-menu= و --firmware-setup میتوانند برای انتخاب اقداماتی که پس از ریبوت باید انجام شوند استفاده گردند. برای جزئیات به توضیحات آن گزینهها مراجعه فرمایید.
این دستور گزینههای --force و --when= را به روشی مشابه halt رعایت میکند.
اگر یک هسته جدید از طریق kexec --load بارگذاری شده باشد، به جای ریبوت یک kexec انجام میشود، مگر اینکه "SYSTEMCTL_SKIP_AUTO_KEXEC=1" تنظیم شده باشد. اگر یک سیستم فایل ریشه جدید روی "/run/nextroot/" راهاندازی شده باشد، به جای ریبوت یک soft-reboot انجام میشود، مگر اینکه "SYSTEMCTL_SKIP_AUTO_SOFT_REBOOT=1" تنظیم شده باشد.
اضافه شده در نسخه 246.
kexec
برای بارگذاری یک هسته، یک شمارش بر اساس Boot Loader Specification[1] انجام میشود و مدخل بوت پیشفرض بارگذاری میگردد. برای موفقیت این مرحله، سیستم باید از UEFI استفاده کند و مدخلهای بوتلودر به درستی پیکربندی شده باشند. از bootctl list میتوان برای فهرست کردن مدخلهای بوت استفاده کرد، به bootctl(1) مراجعه کنید.
این دستور ناهمگام است؛ پس از قرار گرفتن عملیات ریبوت در صف بازمیگردد، بدون آنکه منتظر تکمیل آن بماند.
این دستور گزینههای --force و --when= را مشابه halt رعایت میکند.
اگر یک هسته جدید از طریق kexec --load بارگذاری شده باشد، هنگامی که reboot فراخوانی شود یک kexec انجام خواهد شد، مگر اینکه "SYSTEMCTL_SKIP_AUTO_KEXEC=1" تنظیم شده باشد.
soft-reboot
این دستور گزینههای --force و --when= را به روشی مشابه halt رعایت میکند.
این عملیات فقط فضای کاربری را مجدداً راهاندازی میکند و هسته را در حال اجرا باقی میگذارد. برای جزئیات به systemd-soft-reboot.service(8) مراجعه فرمایید.
اگر یک سیستم فایل ریشه جدید روی "/run/nextroot/" راهاندازی شده باشد، هنگامی که reboot فراخوانی شود یک soft-reboot انجام خواهد شد، مگر اینکه "SYSTEMCTL_SKIP_AUTO_SOFT_REBOOT=1" تنظیم شده باشد.
اضافه شده در نسخه 254.
exit [EXIT_CODE]
در صورت ارائه EXIT_CODE، مدیر سرویس با کد خروج مشخصشده خارج خواهد شد.
اضافه شده در نسخه 227.
switch-root [ROOT [INIT]]
اضافه شده در نسخه 209.
sleep
اضافه شده در نسخه 256.
suspend
اگر --force مشخص شده باشد و systemd-logind خطایی برای عملیات برگرداند، خطا نادیده گرفته شده و عملیات مجدداً مستقیماً از طریق راهاندازی واحد هدف امتحان خواهد شد.
hibernate
این دستور --force را به همان روش suspend رعایت میکند.
hybrid-sleep
این دستور --force را به همان روش suspend رعایت میکند.
اضافه شده در نسخه 196.
suspend-then-hibernate
این دستور --force را به همان روش suspend رعایت میکند.
اضافه شده در نسخه 240.
ساختار پارامترها (Parameter Syntax)
دستورات واحد که در بالا فهرست شدهاند یا یک نام واحد منفرد (مشخصشده به عنوان UNIT) یا چندین مشخصه واحد (تعیینشده به عنوان PATTERN...) را دریافت میکنند. در حالت اول، نام واحد با یا بدون پسوند باید ارائه شود. اگر پسوند مشخص نشود (نام واحد "کوتاهشده" باشد)، systemctl یک پسوند مناسب اضافه خواهد کرد: به طور پیشفرض ".service" و در مورد دستوراتی که فقط روی انواع خاصی از واحدها عمل میکنند، پسوند خاص آن نوع. به عنوان مثال:
# systemctl start sshd
و
# systemctl start sshd.service
معادل یکدیگر هستند، همانطور که دستورات
# systemctl isolate default
و
# systemctl isolate default.target
معادلند. توجه داشته باشید که مسیرهای (مطلق) به گرههای دستگاه به طور خودکار به نام واحدهای دستگاه، و سایر مسیرهای (مطلق) به نام واحدهای مانت تبدیل میشوند.
# systemctl status /dev/sda # systemctl status /home
معادل هستند با:
# systemctl status dev-sda.device # systemctl status home.mount
در حالت دوم، الگوهای فراگیر به سبک شل (glob) با نامهای اصلی تمام واحدهایی که در حال حاضر در حافظه هستند مطابقت داده میشوند؛ نامهای تحتاللفظی واحدها، با یا بدون پسوند، همانند حالت اول رفتار خواهند شد. این بدان معناست که نامهای لفظی واحدها همیشه دقیقاً به یک واحد اشاره میکنند، اما الگوهای گلوب ممکن است با صفر واحد مطابقت داشته باشند و این یک خطا محسوب نمیشود.
الگوهای تطبیق از fnmatch(3) استفاده میکنند، بنابراین قوانین معمول تطبیق پوسته اعمال شده و کاراکترهای "*", "?", "[]" میتوانند استفاده شوند. برای جزئیات بیشتر به glob(7) مراجعه کنید. الگوها با نامهای اصلی واحدهای موجود در حافظه مطابقت داده میشوند و الگوهایی که با هیچ چیزی مطابقت ندارند نادیده گرفته میشوند. برای مثال:
# systemctl stop "sshd@*.service"
تمام نمونههای sshd@.service را متوقف خواهد کرد. توجه داشته باشید که نامهای مستعار واحدها و واحدهایی که در حافظه نیستند برای بسط الگو در نظر گرفته نمیشوند.
برای دستورات فایل واحد، UNIT مشخصشده باید نام فایل واحد (احتمالاً مخففشده، به بالا مراجعه کنید) یا مسیر مطلق به فایل واحد باشد:
# systemctl enable foo.service
یا
# systemctl link /path/to/foo.service
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
-t, --type=
به عنوان یک مورد خاص، اگر یکی از آرگومانها help باشد، فهرستی از مقادیر مجاز چاپ شده و برنامه خارج میشود.
--state=
به عنوان یک مورد خاص، اگر یکی از آرگومانها help باشد، فهرستی از مقادیر مجاز چاپ شده و برنامه خارج میشود.
اضافه شده در نسخه 206.
-p, --property=
برای خود مدیر سیستم، systemctl show تمام ویژگیهای موجود را نشان میدهد که بیشتر آنها مشتق شده یا دقیقاً منطبق بر گزینههای توصیفشده در systemd-system.conf(5) هستند.
ویژگیهای واحدها بر اساس نوع واحد متفاوت است، بنابراین نمایش هر واحد (حتی یک واحد ناموجود) راهی برای فهرست کردن ویژگیهای مربوط به آن نوع است. به طور مشابه، نمایش هر کاری ویژگیهای مربوط به همه کارها را فهرست میکند. ویژگیهای واحدها در systemd.unit(5) و صفحات راهنمای انواع واحدهای منفرد مانند systemd.service(5)، systemd.socket(5) و غیره مستند شدهاند.
-P
اضافه شده در نسخه 246.
-a, --all
برای فهرست کردن تمام واحدهای نصبشده در سیستم فایل، به جای آن از دستور list-unit-files استفاده فرمایید.
هنگام فهرست کردن واحدها با list-dependencies، وابستگیهای تمام واحدهای وابسته را به صورت بازگشتی نمایش میدهد (به طور پیشفرض فقط وابستگیهای واحدهای هدف نشان داده میشوند).
هنگام استفاده با status، پیامهای ژورنال را به طور کامل نشان میدهد، حتی اگر شامل کاراکترهای غیرقابل چاپ باشند یا بسیار طولانی باشند. به طور پیشفرض، فیلدهای دارای کاراکترهای غیرقابل چاپ به صورت "blob data" خلاصه میشوند. (توجه داشته باشید که صفحهبند ممکن است کاراکترهای غیرقابل چاپ را دوباره اسکیپ کند).
-r, --recursive
اضافه شده در نسخه 212.
--reverse
اضافه شده در نسخه 203.
--after
توجه داشته باشید که هر وابستگی After= به طور خودکار برای ایجاد یک وابستگی Before= منعکس میشود. وابستگیهای زمانی ممکن است به صراحت مشخص شوند، اما به طور ضمنی نیز برای واحدهایی که اهداف WantedBy= هستند ایجاد میشوند (به systemd.target(5) مراجعه کنید)، و در نتیجه سایر دستورالعملها (برای مثال RequiresMountsFor=) نیز به وجود میآیند. هر دو نوع وابستگی صریح و ضمنی با list-dependencies نمایش داده میشوند.
هنگامی که به دستور list-jobs منتقل شود، برای هر کار چاپشده نشان میدهد که چه کارهای دیگری منتظر آن هستند. ممکن است با --before ترکیب شود تا هم کارهایی که منتظر هر کار هستند و هم تمام کارهایی که هر کار منتظر آنها است نشان داده شوند.
اضافه شده در نسخه 203.
--before
هنگامی که به دستور list-jobs ارسال شود، برای هر کار چاپشده نشان میدهد که منتظر چه کارهای دیگری است. ممکن است با --after ترکیب شود تا هم کارهای در انتظار و هم کارهای مورد انتظار را نمایش دهد.
اضافه شده در نسخه 212.
--with-dependencies
گزینههای --reverse، --after، --before ممکن است برای تغییر انواع وابستگیهای نمایشدادهشده استفاده شوند.
اضافه شده در نسخه 245.
-l, --full
همچنین اهداف نصب را در خروجی is-enabled نشان میدهد.
--value
اضافه شده در نسخه 230.
--show-types
اضافه شده در نسخه 202.
--job-mode=
اگر "fail" مشخص شود و عملیات درخواستی با یک کار معلق تداخل داشته باشد (به طور خاص: باعث شود یک کار شروع معلق به یک کار توقف یا بالعکس تبدیل شود)، باعث شکست عملیات میشود.
اگر "replace" (پیشفرض) مشخص شود، هر کار در حال تعلیق متداخل در صورت لزوم جایگزین خواهد شد.
اگر "replace-irreversibly" مشخص شود، مانند "replace" عمل میکند، اما همچنین کارهای جدید را غیرقابل برگشت علامتگذاری میکند. این امر از جایگزینی این کارها توسط تراکنشهای متداخل آینده (یا حتی قرار گرفتن در صف در حالی که کارهای غیرقابل برگشت هنوز معلق هستند) جلوگیری میکند. کارهای برگشتناپذیر همچنان میتوانند با استفاده از دستور cancel لغو شوند. این حالت کار باید در هر تراکنشی که shutdown.target را فراخوانی میکند استفاده شود.
مقدار "isolate" فقط برای عملیات شروع معتبر است و باعث میشود هنگامی که واحد مشخصشده شروع میشود، تمام واحدهای دیگر متوقف شوند. این حالت همیشه زمانی که دستور isolate استفاده میشود به کار میرود.
مقدار "flush" باعث میشود هنگامی که کار جدید در صف قرار میگیرد، تمام کارهای در صف لغو شوند.
اگر "ignore-dependencies" مشخص شود، تمام وابستگیهای واحد برای این کار جدید نادیده گرفته شده و عملیات فوراً اجرا میشود. در این صورت، هیچ واحد الزامی برای واحد ارسالی به جریان نخواهد افتاد و هیچ وابستگی ترتیبی رعایت نخواهد شد. این بیشتر یک ابزار اشکالزدایی و امداد برای مدیر سیستم است و نباید توسط برنامهها استفاده شود.
مقدار "ignore-requirements" مشابه "ignore-dependencies" است، اما تنها باعث نادیده گرفته شدن وابستگیهای الزامی میشود، وابستگیهای ترتیبی همچنان رعایت خواهند شد.
مقدار "triggering" فقط با systemctl stop میتواند استفاده شود. در این حالت، واحد مشخصشده و تمام واحدهای فعالی که آن را راهاندازی میکنند متوقف میشوند. برای اطلاعات بیشتر در مورد واحدهای راهانداز، به بحث Triggers= در systemd.unit(5) مراجعه کنید.
مقدار "restart-dependencies" فقط با systemctl start میتواند استفاده شود. در این حالت، وابستگیهای واحد مشخصشده انتشار راهاندازی مجدد دریافت میکنند، گویی یک کار راهاندازی مجدد برای آن واحد در صف قرار گرفته است.
اضافه شده در نسخه 209.
-T, --show-transaction
اضافه شده در نسخه 242.
--fail
هنگام استفاده با دستور kill، اگر هیچ واحدی کشته نشود، عملیات منجر به خطا میشود.
اضافه شده در نسخه 227.
--check-inhibitors=
برنامهها میتوانند قفلهای بازدارنده ایجاد کنند تا از قطع شدن برخی عملیات مهم (مانند سوزاندن CD) توسط خاموش شدن سیستم یا خواب جلوگیری نمایند. هر کاربری میتواند این قفلها را بگیرد و کاربران دارای امتیاز میتوانند این قفلها را نادیده بگیرند. اگر قفلی گرفته شده باشد، درخواستهای خاموش شدن و وضعیت خواب به طور معمول با شکست مواجه میشوند (مگر اینکه صراحتاً با "no" بازنویسی شوند).
گزینه --force راه دیگری برای نادیده گرفتن بازدارندهها فراهم میکند.
اضافه شده در نسخه 248.
-i
اضافه شده در نسخه 198.
--dry-run
اضافه شده در نسخه 236.
-q, --quiet
--no-warn
اضافه شده در نسخه 253.
--no-block
--wait
هنگامی که با is-system-running استفاده شود، قبل از بازگشت منتظر میماند تا فرآیند بوت تکمیل شود.
هنگامی که با kill استفاده شود، منتظر میماند تا واحدهای سیگنالدادهشده خاتمه یابند. توجه داشته باشید در صورتی که هر واحد معین هرگز خاتمه نیابد، این گزینه برای همیشه منتظر خواهد ماند.
اضافه شده در نسخه 232.
--user
--system
--failed
اضافه شده در نسخه 233.
--no-wall
--global
--no-reload
--kill-whom=
اضافه شده در نسخه 252.
--kill-value=INT
در صورت استفاده از این گزینه، سیگنال تنها برای فرآیند کنترلی یا اصلی واحد در صف قرار میگیرد و هرگز برای سایر فرآیندهای متعلق به واحد ارسال نخواهد شد؛ یعنی --kill-whom=all تنها بر فرآیندهای اصلی و کنترلی تأثیر میگذارد و نه بر هیچ فرآیند دیگری.
اضافه شده در نسخه 254.
-s, --signal=
مقدار ویژه "help" فهرست مقادیر شناختهشده را چاپ کرده و برنامه بلافاصله خارج میشود، و مقدار ویژه "list" فهرست مقادیر شناختهشده را به همراه شماره عددی سیگنالها نمایش داده و برنامه بلافاصله خارج خواهد شد.
--what=
اضافه شده در نسخه 243.
-f, --force
هنگام استفاده با edit، تمام واحدهای مشخصشدهای را که از قبل وجود ندارند ایجاد میکند.
هنگام استفاده با suspend، hibernate، hybrid-sleep یا suspend-then-hibernate، خطای بازگرداندهشده توسط systemd-logind نادیده گرفته شده و عملیات مستقیماً از طریق راهاندازی واحدهای مربوطه انجام خواهد شد.
هنگام استفاده با halt، poweroff، reboot یا kexec، عملیات انتخابشده را بدون خاموش کردن همه واحدها اجرا میکند. با این حال، تمام فرآیندها به اجبار کشته میشوند و تمام سیستمهای فایل پیاده (unmount) یا دوباره به صورت فقطخواندنی متصل میشوند. بنابراین این یک گزینه شدید اما نسبتاً ایمن برای درخواست راهاندازی مجدد فوری است. اگر --force دو بار برای این عملیات (به استثنای kexec) مشخص شود، آنها بلافاصله بدون خاتمه دادن به هیچ فرآیندی یا پیادهسازی هیچ سیستم فایلی اجرا خواهند شد.
هشدار
مشخص کردن دوبار --force در هر یک از این عملیات ممکن است منجر به از دست رفتن دادهها شود. توجه داشته باشید هنگامی که --force دو بار مشخص شود، عملیات انتخابشده توسط خود systemctl اجرا میشود و با مدیر سیستم ارتباطی برقرار نمیشود. این بدان معناست که دستور حتی در صورت کرش کردن مدیر سیستم نیز باید با موفقیت کار کند.
--message=
اضافه شده در نسخه 225.
--now
اضافه شده در نسخه 220.
--root=
--image=image
اضافه شده در نسخه 252.
--image-policy=policy
--runtime
به طور مشابه، هنگام استفاده با set-property، تغییرات را به طور موقت اعمال میکند تا در ریبوت بعدی از دست بروند.
--preset-mode=
اضافه شده در نسخه 215.
-n, --lines=
-o, --output=
--firmware-setup
اضافه شده در نسخه 220.
--boot-loader-menu=timeout
اضافه شده در نسخه 242.
--boot-loader-entry=ID
اضافه شده در نسخه 242.
--reboot-argument=
اضافه شده در نسخه 246.
--plain
اضافه شده در نسخه 203.
--timestamp=
pretty (پیشفرض است)
اضافه شده در نسخه 248.
unix
اضافه شده در نسخه 251.
us, μs
اضافه شده در نسخه 248.
utc
اضافه شده در نسخه 248.
us+utc, μs+utc
اضافه شده در نسخه 248.
اضافه شده در نسخه 247.
--mkdir
اضافه شده در نسخه 248.
--marked
مگر اینکه از --no-block استفاده شود، systemctl منتظر میماند تا کارهای در صف به پایان برسند.
اضافه شده در نسخه 248.
--read-only
اضافه شده در نسخه 248.
--drop-in=NAME
اضافه شده در نسخه 253.
--when=
اضافه شده در نسخه 254.
--stdin
$ systemctl edit --drop-in=limits.conf --stdin some-service.service <<EOF [Unit] AllowedCPUs=7,11 EOF
چندین drop-in میتوانند در این حالت "ویرایش" شوند؛ محتوای یکسان در همه آنها نوشته خواهد شد.
اضافه شده در نسخه 256.
-H, --host=
-M, --machine=
-C, --capsule=
اضافه شده در نسخه 256.
--no-ask-password
--no-pager
--legend=BOOL
-h, --help
--version
کدهای خروج (EXIT STATUS)
در صورت موفقیت 0، و در غیر این صورت یک کد شکست غیرصفر بازگردانده میشود.
systemctl از کدهای بازگشتی تعریفشده توسط LSB استفاده میکند، همانطور که در LSB 3.0.0[3] تعریف شده است.
جدول 5. کدهای بازگشتی LSB
| مقدار | توضیحات در LSB | کاربرد در systemd |
| 0 | "برنامه در حال اجراست یا سرویس سالم است" | واحد فعال است (unit is active) |
| 1 | "برنامه مرده است و فایل pid در /var/run وجود دارد" | واحد ناموفق نیست (استفادهشده توسط is-failed) |
| 2 | "برنامه مرده است و فایل قفل در /var/lock وجود دارد" | استفادهنشده |
| 3 | "برنامه در حال اجرا نیست" | واحد فعال نیست (unit is not active) |
| 4 | "وضعیت برنامه یا سرویس نامشخص است" | چنین واحدی وجود ندارد (no such unit) |
تطبیق
وضعیتهای
سرویس LSB با
وضعیتهای
واحد systemd ناقص
است،
بنابراین
بهتر است به
این مقادیر
بازگشتی
اتکا نکنید
و در عوض
وضعیتها و
وضعیتهای
فرعی خاص
واحد را
بررسی
فرمایید.
محیط (ENVIRONMENT)
$SYSTEMD_EDITOR
اضافه شده در نسخه 218.
$SYSTEMD_LOG_LEVEL
$SYSTEMD_LOG_COLOR
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند، خودشان پیامها را بر اساس سطح لاگ رنگآمیزی میکنند.
$SYSTEMD_LOG_TIME
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند، خودشان بر اساس فرادادههای ورودی برچسبهای زمانی را پیوست میکنند.
$SYSTEMD_LOG_LOCATION
توجه داشته باشید که مکان لاگ اغلب به هر حال به عنوان فراداده به ورودیهای ژورنال پیوست میشود. با این وجود، گنجاندن مستقیم آن در متن پیام هنگام اشکالزدایی برنامهها میتواند راحت باشد.
$SYSTEMD_LOG_TARGET
$SYSTEMD_PAGER, $PAGER
توجه: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER فقط برای غیرفعال کردن صفحهبند (با "cat" یا "") میتوانند استفاده شوند و در غیر این صورت نادیده گرفته میشوند.
$SYSTEMD_LESS
کاربران ممکن است به ویژه بخواهند دو گزینه را تغییر دهند:
K
اگر مقدار $SYSTEMD_LESS شامل "K" نباشد، و صفحهبند فراخوانیشده less باشد، Ctrl+C توسط برنامه اجرایی نادیده گرفته میشود و باید توسط صفحهبند مدیریت شود.
X
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ اثری بر فراخوانیهای less توسط ابزارهای systemd ندارد.
برای بحث بیشتر به less(1) مراجعه فرمایید.
$SYSTEMD_LESSCHARSET
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تاثیری برای فراخوانیهای less توسط ابزارهای systemd ندارد.
$SYSTEMD_PAGERSECURE
این گزینه یک آرگومان بولی میپذیرد. در صورت تنظیم روی درست (true)، "حالت امن" صفحهبند فعال میشود. در "حالت امن"، LESSSECURE=1 هنگام فراخوانی صفحهبند تنظیم میشود، که به صفحهبند دستور میدهد دستوراتی را که فایلهای جدید باز میکنند یا میسازند، یا فرآیندهای فرعی جدید شروع میکنند غیرفعال کند. در حال حاضر فقط less(1) شناخته شده است که این متغیر را درک کرده و "حالت امن" را پیادهسازی میکند.
هنگامی که روی نادرست (false) تنظیم شود، هیچ محدودیتی برای صفحهبند اعمال نمیشود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را فراخوانی کند.
هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd سعی میکنند به طور خودکار بفهمند که آیا "حالت امن" باید فعال شود و آیا صفحهبند از آن پشتیبانی میکند یا خیر. اگر UID مؤثر با مالک نشست ورود یکسان نباشد (به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید)، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه (در صورتی که $SUDO_UID تنظیم شده باشد [4])، "حالت امن" فعال میشود. در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم خواهد شد و صفحهبندهایی که مشخص نیست "حالت امن" را پیادهسازی کرده باشند اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار تنها رایجترین سازوکارهای ارتقای امتیازات را پوشش میدهد و برای راحتی کار در نظر گرفته شده است. توصیه میشود $SYSTEMD_PAGERSECURE را به صورت صریح تنظیم کنید یا صفحهبند را غیرفعال نمایید.
توجه داشته باشید که اگر قرار است متغیرهای $SYSTEMD_PAGER یا $PAGER غیر از حالت غیرفعال کردن صفحهبند رعایت شوند، $SYSTEMD_PAGERSECURE نیز باید تنظیم شده باشد.
$SYSTEMD_COLORS
$SYSTEMD_URLIFY
همچنین ببینید (SEE ALSO)
systemd(1), journalctl(1), loginctl(1), machinectl(1), systemd.unit(5), systemd.resource-control(5), systemd.special(7), wall(1), systemd.preset(5), systemd.generator(7), glob(7)
یادداشتها (NOTES)
- 1.
- مشخصات لودر بوت (Boot Loader Specification)
- 2.
- مشخصات پارتیشنهای قابل کشف (Discoverable Partitions Specification)
- 3.
- استاندارد LSB 3.0.0
- 4.
- توصیه میشود سایر ابزارها نیز $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
| systemd 257.13 |