systemd の timer を作成する

たまにしかやらないから忘れるシリーズ。

まず timer で起動される .service ファイルを /etc/systemd/system 下に作る。

[Unit]
Description=Rotate logs

[Service]
Type=oneshot
ExecStart=/usr/bin/logrotate /etc/logrotate.conf

同じく /etc/systemd/system 下に .timer ファイルを作成する。

[Unit]
Description=Daily logrotate schedule

[Timer]
OnCalendar=*-*-* 03:00:00
Unit=logrotate.service

[Install]
WantedBy=timers.target
# systemctl enable logrotate.timer
# systemctl start logrotate.timer

確認は systemctl list-timers で。

# systemctl list-timers
NEXT                         LEFT         LAST                         PASSED  UNIT                         ACTIVATES
Sat 2017-05-13 03:00:00 JST  4h 9min left Fri 2017-05-12 03:00:30 JST  19h ago logrotate.timer              logrotate.service

start していない timer も全てリストするなら --all を付ける。

# systemctl list-timers --all
NEXT                         LEFT         LAST                         PASSED  UNIT                         ACTIVATES
Sat 2017-05-13 03:00:00 JST  4h 9min left Fri 2017-05-12 03:00:30 JST  19h ago logrotate.timer              logrotate.service
https://manimani.cc/lib/plugins/linkback/exe/trackback.php/wiki:linux:set_timer_on_systemd