Linux起動時に、指定のコマンドを実行するには、initを使用したサービス起動環境では rc.local に記述していました。
この rc.local は、/etc/init.d/ 下のサービス起動の後に実行されます。
しかし、systemd環境で rc.local 相当のサービスを起動しても、他のサービス起動と同時に実行されてしまい、最後に実行されるわけではありません。
一番最後に実行するには、次のようにします。
rc-local-latestサービスを作成します。
/lib/systemd/system/rc-local-latest.service
[Unit]
After=default.target
[Install]
WantedBy=default.target
[Service]
Type=forking
ExecStart=/etc/rc.local.latest
After=default.target
[Install]
WantedBy=default.target
[Service]
Type=forking
ExecStart=/etc/rc.local.latest
自動起動するようにします。
systemctl --system enable rc-local-latest
/etc/rc.local.latest ファイルを用意し、コマンドを記述します。
また、実行権限を付けます。
chmod +x /etc/rc.local.latest
これで、/etc/rc.local 同様、他のサービス起動の後に、実行します。
参考
OS起動時にsystemdで行われていること – Qiita
「Systemd」を理解する ーシステム起動編ー | ギークを目指して
arch linux – How to write a systemd .service file running systemd-tmpfiles – Unix & Linux Stack Exchange
コメント