轉載自博客 http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html
Timer 單元
定時執行某個Service,必須定義 Timer 單元。
范例
/usr/lib/systemd/system目錄里面,新建一個mytimer.timer文件,寫入下面的內容。
[Unit]
Description=Runs mytimer every hour
[Timer]
OnUnitActiveSec=1h
Unit=mytimer.service
[Install]
WantedBy=multi-user.target
解釋
這個 Timer 單元文件分成幾個部分。
[Unit]部分定義元數據。
[Timer]部分定制定時器。Systemd 提供以下一些字段。
- OnActiveSec:定時器生效后,多少時間開始執行任務
- OnBootSec:系統啟動后,多少時間開始執行任務
- OnStartupSec:Systemd 進程啟動后,多少時間開始執行任務
- OnUnitActiveSec:該單元上次執行后,等多少時間再次執行
- OnUnitInactiveSec: 定時器上次關閉后多少時間,再次執行
- OnCalendar:基於絕對時間,而不是相對時間執行
- AccuracySec:如果因為各種原因,任務必須推遲執行,推遲的最大秒數,默認是60秒
- Unit:真正要執行的任務,默認是同名的帶有.service后綴的單元
- Persistent:如果設置了該字段,即使定時器到時沒有啟動,也會自動執行相應的單元
- WakeSystem:如果系統休眠,是否自動喚醒系統
上面的腳本里面,OnUnitActiveSec=1h表示一小時執行一次任務。其他的寫法還有OnUnitActiveSec=--* 02:00:00表示每天凌晨兩點執行,OnUnitActiveSec=Mon --* 02:00:00表示每周一凌晨兩點執行,具體請參考官方文檔。
查看所有正在運行的定時器
systemctl list-timers
查看 mytimer.timer 的日志
journalctl -u mytimer.timer