備忘録

備忘録

systemdを利用して一定時間ごとに任意のコマンドを実行する方法

Ⅰ. はじめに

タイトルの通り「systemdを利用して一定時間ごとに任意のコマンドを実行する方法」です。

Ⅱ. やり方

1. 一時的なスケジュールを作成する
# 「『5秒ごとに"echo hello"を実行するスケジュール』を『1秒後に開始する』」スケジュールを作成する
# タイマー精度100ms
systemd-run --unit=Hello --on-active=1s --on-unit-active=5s --timer-property=AccuracySec=100ms echo hello
2. 作成されたか確認する
systemctl list-timers
3. ログを確認する
journalctl -fu Hello
4. 一時的なスケジュールを削除する
systemctl stop Hello.timer

実行結果

$ journalctl -fu Hello
Dec 13 10:16:03 localhost systemd[1]: Started /usr/bin/echo hello.
Dec 13 10:16:03 localhost echo[1069]: hello
Dec 13 10:16:03 localhost systemd[1]: Hello.service: Succeeded.
Dec 13 10:16:08 localhost systemd[1]: Started /usr/bin/echo hello.
Dec 13 10:16:08 localhost echo[1080]: hello
Dec 13 10:16:08 localhost systemd[1]: Hello.service: Succeeded.
Dec 13 10:16:13 localhost systemd[1]: Started /usr/bin/echo hello.
Dec 13 10:16:13 localhost echo[1092]: hello
Dec 13 10:16:13 localhost systemd[1]: Hello.service: Succeeded.

留意点

OSを再起動すると一時的なスケジュールが削除されます
恒久的な方法はこちら