晴耕雨読

working in the fields on fine days and reading books on rainy days

systemdからinit.dのスクリプトを呼び出すまでの流れ

systemctl から /etc/init.d/ にあるサービスを開始・停止できる仕組みについて説明します。

通常では /etc/init.d/ServiceName statussystemctl status ServiceName は同じようにサービスのステータスを取得することができます。 start や stop なども同様です。 現在は init.d は非推奨で systemd に移行することが求められていますが、それでも systemd から init.d への互換性の仕組みが用意されています。

systemd には systemd-sysv-generator と呼ばれる機能があります。 これはLinux起動直後(ブート直後)に実行されて、/etc/rc?.d/ にあるスクリプトの実ファイル名からsystemd用のユニットファイルに変換し、その変換結果を /var/run/systemd/generator.late/*.service に格納することで、systemctl から /etc/rc?.d のスクリプト(つまり /etc/init.d/* のサービス)を管理・制御できる仕組みになっています。

そのため、/etc/rc?.d/ (例えば /etc/rc3.d など) に配置しただけだと systemctl から呼び出せず、サーバを再起動することで systemctl から使えるようになります。

以上です。

参考文献