Ⅰ. はじめに
タイトルの通り「systemdをcron代替として利用する方法」です。
例として「10秒ごとにecho helloを実行する方法」をこの記事で紹介します。
Ⅱ. やり方
1. サービスユニットファイルを作成する
/etc/systemd/system/Hello.service
[Unit] Description=Hello service [Service] Type=oneshot ExecStart=echo hello
2. タイマーユニットファイルを作成する
/etc/systemd/system/Hello.timer
[Unit] Description=Hello timer [Timer] # OS起動後10分経過後に実行する OnBootSec=10min # OS起動後1時間15分経過後に実行する # OnBootSec=1hour 15min # 10秒ごとに実行 OnUnitActiveSec=10s # タイマー精度 AccuracySec=100ms # OSが停止等で前回未実行の場合直ちに実行する # Persistent=true
3. 起動する
systemctl start Hello.timer
4. 状態確認
systemctl list-timers
結果
10秒ごとに実行されている
$ journalctl -fu Hello Jun 29 17:42:13 localhost echo[4056]: hello Jun 29 17:42:13 localhost systemd[1]: Hello.service: Succeeded. Jun 29 17:42:13 localhost systemd[1]: Finished Hello service. Jun 29 17:42:23 localhost systemd[1]: Starting Hello service... Jun 29 17:42:23 localhost echo[4066]: hello Jun 29 17:42:23 localhost systemd[1]: Hello.service: Succeeded. Jun 29 17:42:23 localhost systemd[1]: Finished Hello service. Jun 29 17:42:33 localhost systemd[1]: Starting Hello service... Jun 29 17:42:33 localhost echo[4080]: hello Jun 29 17:42:33 localhost systemd[1]: Hello.service: Succeeded. Jun 29 17:42:33 localhost systemd[1]: Finished Hello service.