システム展開でサービスコマンドを使用できるのはなぜですか?

システム展開でサービスコマンドを使用できるのはなぜですか?

私はLinux initシステムを理解しようとしています。どのように3つの競合するシステムがあるのか​​わかりませんが、このserviceコマンドはすべてのシステムで機能するようです。

サービスコマンドmanページから:

サービスはSystem V initスクリプトまたはupstartジョブを実行します。

私はLubuntu 16.4を使用しています。考えるsystemdはデフォルトの初期化システムです(pstreesystemdをルートプロセスとして表します)。 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

関連情報