これは些細な問題かもしれませんが、私には完全に明確ではありません。サーバーの1つで、service
で開始されたいくつかのバックグラウンドプロセスと、systemctl
で開始されたいくつかのバックグラウンドプロセスが実行されています。
$ service nginx start
$ systemctl start gunicorn
2つのコマンドの違いは何ですか?バックグラウンドサービスを処理するために推奨される方法はどれですか。優先コマンドを構成する方法は?
service
は、さまざまなUNIXおよびLinuxでサービスを開始および停止するために使用される「高レベル」コマンドです。 「下位レベル」のサービスマネージャに応じて、service
は異なるバイナリにリダイレクトします。
たとえば、CentOS 7ではsystemctl
にリダイレクトしますが、CentOS 6では相対/etc/init.d
スクリプトを直接呼び出します。一方、古いUbuntuリリースではupstart
にリダイレクトされます
service
は基本的なサービス管理に適していますが、直接systemctl
を呼び出すと、より多くの制御オプションが提供されます。
systemctl
は基本的にservice
のより強力なバージョンです。
service
を使用すると、サービスに関連するコマンド(つまりstatus
、reload
、restart
)のみを実行できますが、systemctl
を使用すると、次のようなより高度なコマンド:
systemctl is-failed name.service # check if service failed to load
またはマスキングサービス:
systemctl mask name.service
Ask Ubuntuの このページ にはたくさんの良い情報があります。
systemctl
は、systemd
内のデーモン/サービスを制御するためのメインユーティリティです。
_service
コマンドはSysVinit
の世界の伝統的なユーティリティです。
Systemdの機能の1つは、SysVinit/legacyコマンドと互換性があることです。
したがって、systemctl
コマンドがある場合、service foo start
はsystemctl start foo
のラッパーになります。
chkconfig
も同じです。