私はLinux initシステムを理解しようとしています。どのように3つの競合するシステムがあるのかわかりませんが、このservice
コマンドはすべてのシステムで機能するようです。
サービスコマンドman
ページから:
サービスはSystem V initスクリプトまたはupstartジョブを実行します。
私はLubuntu 16.4を使用しています。考えるsystemdはデフォルトの初期化システムです(pstree
systemdをルートプロセスとして表します)。 Systemdはサービスマニュアルページに記載されていません。しかし、私はまだそれをスクリプトの起動と停止に使用します。
なぜこれを説明できる人がいますか?
答え1
一部のディストリビューションでは、従来のコマンドが引き続き機能するように互換性スクリプトを含めることを選択します。たとえば、Debian 8の場合です。
root@matrix:~# which service
/usr/sbin/service
root@matrix:~# file /usr/sbin/service
/usr/sbin/service: POSIX shell script, ASCII text executable, with very long lines
root@matrix:~# grep upstart /usr/sbin/service
# Operate against system upstart, not session
&& initctl version 2>/dev/null | grep -q upstart \
# Upstart configuration exists for this job and we're running on upstart
# Action is a valid upstart action
root@matrix:~# grep systemd /usr/sbin/service
is_systemd=
if [ -d /run/systemd/system ]; then
is_systemd=1
# On systems using systemd, we just perform a normal restart:
# A restart with systemd is already a full restart.
if [ -n "$is_systemd" ]; then
# When this machine is running systemd, standard service calls are turned into
if [ -n "$is_systemd" ]
# the systemd service file does not (yet) support reload for a