web-dev-qa-db-ja.com

serviceとsystemctlの違いは何ですか?

これは些細な問題かもしれませんが、私には完全に明確ではありません。サーバーの1つで、serviceで開始されたいくつかのバックグラウンドプロセスと、systemctlで開始されたいくつかのバックグラウンドプロセスが実行されています。

$ service nginx start
$ systemctl start gunicorn

2つのコマンドの違いは何ですか?バックグラウンドサービスを処理するために推奨される方法はどれですか。優先コマンドを構成する方法は?

41

serviceは、さまざまなUNIXおよびLinuxでサービスを開始および停止するために使用される「高レベル」コマンドです。 「下位レベル」のサービスマネージャに応じて、serviceは異なるバイナリにリダイレクトします。

たとえば、CentOS 7ではsystemctlにリダイレクトしますが、CentOS 6では相対/etc/init.dスクリプトを直接呼び出します。一方、古いUbuntuリリースではupstartにリダイレクトされます

serviceは基本的なサービス管理に適していますが、直接systemctlを呼び出すと、より多くの制御オプションが提供されます。

45
shodanshok

systemctlは基本的にserviceのより強力なバージョンです。

serviceを使用すると、サービスに関連するコマンド(つまりstatusreloadrestart)のみを実行できますが、systemctlを使用すると、次のようなより高度なコマンド:

systemctl is-failed name.service # check if service failed to load

またはマスキングサービス:

systemctl mask name.service

Ask Ubuntuの このページ にはたくさんの良い情報があります。

11
SamCyanide

systemctlは、systemd内のデーモン/サービスを制御するためのメインユーティリティです。
_serviceコマンドはSysVinitの世界の伝統的なユーティリティです。

Systemdの機能の1つは、SysVinit/legacyコマンドと互換性があることです。
したがって、systemctlコマンドがある場合、
service foo startsystemctl start fooのラッパーになります。

chkconfigも同じです。

1
maioman