Centos7

Systemctl:找出哪些命令適用於服務

  • February 15, 2016

如何使用 systemctl 找出哪些命令適用於服務?

# systemctl reload nagios.service
failed to reload nagios.service: Job type reload is not applicable for unit nagios.service.

使用 init.d 您可以在沒有命令的情況下執行腳本並查看適用命令的使用資訊:

# /etc/init.d/nagios 
Usage: /etc/init.d/nagios {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}

systemctl不像舊的初始化腳本。根據其man頁面,它支持以下命令,類似於您正在搜尋的 init-script 命令:

  • start 啟動(啟動)在命令行中指定的一個或多個單元。
  • stop停止(停用)在命令行中指定的一個或多個單元。
  • reload要求命令行上列出的所有單元重新載入它們的配置。
  • restart重新啟動在命令行中指定的一個或多個單元。如果這些單元尚未執行,它們將被啟動。
  • try-restart如果單元正在執行,則重新啟動在命令行中指定的一個或多個單元。如果單元沒有執行,這將不起作用。請注意,為了與 Red Hat 初始化腳本兼容,condrestart等效於該命令。
  • reload-or-restart如果他們支持,請重新載入一個或多個單位。如果沒有,請重新啟動它們。如果這些單元尚未執行,它們將被啟動。
  • reload-or-try-restart如果他們支持,請重新載入一個或多個單位。如果沒有,請重新啟動它們。如果單元沒有執行,這將不起作用。請注意,為了與 SysV 初始化腳本兼容,force-reload等效於該命令。

所以這些命令組基本上歸結為start,stopreload。由於startstop對於大多數服務類型都是必需的(並且您通常知道服務是否不支持其中之一),因此您唯一想知道的是給定服務是否支持reload

大多數時候,您希望它重新載入或重新啟動:systemctl reload-or-restart nagios然後使用。要真正找出執行重新載入的命令(如果有),您可以查看其服務文件。這通常可以在/lib/systemd/system/or中找到/usr/lib/systemd/system並且被命名$SERVICENAME.service(在你的情況下nagios.service)。ExecStart此文件包含用於啟動、停止和可能重新載入服務的命令,即ExecStopExecReload。如果您對此感興趣,您可以做一個grep ExecReload /lib/systemd/system/nagios.service以了解服務是否支持重新載入。

TL;博士

systemctl基本上支持start,stopreload. 要了解服務是否支持重新載入,只需嘗試一下。如果您需要在腳本或其他內容中重新載入多個服務,請使用reload-or-restart,如果服務儲存了 -command,它將重新載入服務ExecReload,否則將重新啟動它。

引用自:https://serverfault.com/questions/755174