web-dev-qa-db-ja.com

Systemctl:サービスに適用できるコマンドを見つけます

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}
7
Lerkes

systemctlは、古き良きinitスクリプトとは異なります。 manページによると、検索しているinit-scriptコマンドのような次のコマンドをサポートしています。

  • startコマンドラインで指定された1つ以上のユニットを開始(アクティブ化)します。
  • stopコマンドラインで指定された1つ以上のユニットを停止(非アクティブ化)します。
  • reloadコマンドラインにリストされているすべてのユニットに、構成を再ロードするように要求します。
  • restartコマンドラインで指定された1つ以上のユニットを再起動します。ユニットがまだ実行されていない場合は、開始されます。
  • try-restartユニットが実行されている場合は、コマンドラインで指定された1つ以上のユニットを再起動します。ユニットが実行されていない場合、これは何もしません。 Red Hat initスクリプトとの互換性のために、condrestartはこのコマンドと同等であることに注意してください。
  • reload-or-restartサポートされている場合は、1つ以上のユニットをリロードします。そうでない場合は、代わりに再起動してください。ユニットがまだ実行されていない場合は、開始されます。
  • reload-or-try-restartサポートされている場合は、1つ以上のユニットをリロードします。そうでない場合は、代わりに再起動してください。ユニットが実行されていない場合、これは何もしません。 SysV initスクリプトとの互換性のために、force-reloadはこのコマンドと同等であることに注意してください。

したがって、これらのコマンドのグループは基本的にstartstopおよびreloadに要約されます。 startstopはほとんどのサービスタイプに必要であるため(通常、サービスがそれらの1つをサポートしていないかどうかはわかっています)、特定のサービスかどうかを知ることができます。 reloadをサポートするかどうか。

ほとんどの場合、リロードまたは再起動する必要があります。次にsystemctl reload-or-restart nagiosを使用します。リロードのために実行されるコマンド(ある場合)を実際に見つけるには、そのサービスファイルを調べます。これは通常/lib/systemd/system/または/usr/lib/systemd/systemにあり、$SERVICENAME.service(あなたの場合はnagios.service)という名前です。このファイルには、サービスを開始、停止、および場合によってはリロードするためのコマンド、つまりExecStartExecStopおよびExecReloadが含まれています。これに興味がある場合は、grep ExecReload /lib/systemd/system/nagios.serviceを実行して、サービスがリロードをサポートしているかどうかを確認できます。

TL; DR

systemctlは基本的にstartstopおよびreloadをサポートします。サービスがリロードをサポートしているかどうかを確認するには、試してください。スクリプトなどで複数のサービスをリロードする必要がある場合は、reload-or-restartを使用します。これにより、ExecReload- commandが保存されている場合はサービスがリロードされ、そうでない場合は再起動されます。

6
Mitja