24.5. systemd ユニットファイルを使用した次回ブート時のジョブの実行スケジュール
cron、anacron、at、batch ユーティリティーを使うと、特定の時間に、またはシステム負荷が特定のレベルに達したときに、ジョブを実行するように設定できます。また、次回のシステムブート時に実行するジョブを作成することもできます。これは、実行するスクリプトとその依存関係を指定する systemd ユニットファイルを作成することで行います。
次回の起動時に実行するスクリプトを設定するには、以下を実行します。
起動プロセスのどの段階でスクリプトを実行するかを指定する
systemdユニットファイルを作成します。この例で挙げているのは、Wants=とAfter=の合理的な一連の依存関係を備えたユニットファイルです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例を使用すると、以下が可能となります。
-
/usr/local/bin/foobar.shを、自分のスクリプトの名前に置き換えます。 必要に応じて
After=エントリーのセットを変更します。起動プロセスの段階を指定する方法は 「systemd のユニットファイルの作成および変更」 を参照してください。
-
スクリプトの実行後も
systemdサービスをアクティブに維持したいときは、RemainAfterExit=yes行を[Service]セクションに追加します。[Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/foobar.sh
[Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/foobar.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemdデーモンをリロードします。systemctl daemon-reload
~]# systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemdサービスを有効にします。systemctl enable one-time.service
~]# systemctl enable one-time.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を実行するスクリプトを作成します。
~]# cat /usr/local/bin/foobar.sh #!/bin/bash touch /root/test_file
~]# cat /usr/local/bin/foobar.sh #!/bin/bash touch /root/test_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを次回のブート時のみに実行したいときは、
systemdユニットを無効にする行を追加します。#!/bin/bash touch /root/test_file systemctl disable one-time.service
#!/bin/bash touch /root/test_file systemctl disable one-time.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行可能にします。
chmod +x /usr/local/bin/foobar.sh
~]# chmod +x /usr/local/bin/foobar.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow