如何找出哪些命令适用于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
不像旧的init脚本。 根据其man
页,它支持以下类似于您正在search的init-script命令的命令:
start
启动(激活)命令行中指定的一个或多个单元。 stop
停止(停用)命令行中指定的一个或多个单元。 reload
请求命令行上列出的所有设备重新加载其configuration。 restart
启动在命令行上restart
启动一个或多个单元。 如果单位还没有运行,他们将被启动。 try-restart
如果单元正在运行,请try-restart
启动一个或多个在命令行中指定的单元。 如果单位没有运行,这什么都不做。 请注意,为了与Red Hat初始化脚本兼容, condrestart
等同于此命令。 reload-or-restart
加载一个或多个单位,如果他们支持。 如果不是,请重新启动它们。 如果单位还没有运行,他们将被启动。 reload-or-try-restart
载入一个或多个单位(如果他们支持的话)。 如果不是,请重新启动它们。 如果单位没有运行,这什么都不做。 请注意,为了与SysV init脚本兼容, force-reload
等同于此命令。 所以这些命令的组合基本上归结为start
, stop
和reload
。 由于大多数服务types都需要start
和stop
(通常你知道服务是否支持其中之一),所以你可能想知道的唯一事情就是给定的服务是否支持reload
。
大多数情况下,您希望它重新加载或重新启动:然后使用systemctl reload-or-restart nagios
。 要真正找出执行重新加载的命令(如果有),可以查看其服务文件。 这通常可以在/lib/systemd/system/
或/usr/lib/systemd/system
,命名为$SERVICENAME.service
(在你的情况下为nagios.service
)。 该文件包含启动,停止和可能重新加载服务的命令,即ExecStart
, ExecStop
和ExecReload
。 如果您对此感兴趣,可以使用grep ExecReload /lib/systemd/system/nagios.service
来确定服务是否支持重新加载。
TL; DR
systemctl
本质上支持start
, stop
和reload
。 要找出一个服务是否支持重新加载,只需尝试一下。 如果您需要在脚本或其他东西中重新加载多个服务,请使用reload-or-restart
,如果存储了ExecReload
命令,则重新加载服务,否则重新启动服务。