nginx
がインストールされたUbuntu16.04.1の新規インストールがあり、dpkgがnginxをインストールすると、2つの場所で起動時の構成が登録されました。
起動時にnginxデーモン(または「マルチユーザーターゲット」)を開始するように指示するsystemd config
% ls -l /etc/systemd/system/multi-user.target.wants/nginx.service
/etc/systemd/system/multi-user.target.wants/nginx.service -> /lib/systemd/system/nginx.service
起動時にnginxデーモンを開始する(または「レベル5を実行する」)ことを示すinitVconfig
% ls -l /etc/rc5.d/S02nginx
lrwxrwxrwx 1 root root 15 Apr 2 23:27 /etc/rc5.d/S02nginx -> ../init.d/nginx
Nginxを無効にすると、systemdは、ある種の下位互換性アクションが発生していることを示す出力を表示します
% Sudo systemctl disable nginx.service
Synchronizing state of nginx.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable nginx
insserv: warning: current start runlevel(s) (empty) of script `nginx' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `nginx' overrides LSB defaults (0 1 6).
これにより、両方のシンボリックリンクが上から削除されます。
なぜこの設定がこのようになっているのですか?新しいsystemdconfigまたは古いsystemVinitのどちらか一方だけがないのはなぜですか?
jordanm コメントとして、これはさまざまなinitシステムがサポートされているDebianから継承されています。それだけでなく、再インストールせずにinitシステムを変更して、有効または無効になっているサービスを含め、構成が存続することを期待できます。これが、systemdとsysvinit
のセットアップが同期されている理由です。 (使用されている機能の少なくとも一部はアップストリームsystemdによって提供されており、DebianまたはUbuntu固有ではないことに注意してください。)