Linux systemd定時器簡單教程
很多教程都是使用crontab來實現定時功能,但crontab在ubuntu下預設並沒有安裝。而systemd也能實現定時任務功能,所以就直接使用它了,特在此作記錄。
需求:每天凌晨一點執行一次指令碼
我喜歡把自己寫的定時器放在/usr/lib/systemd/system目錄下,如果不存在則新建一個,便於管理。
Start
需要新建兩個檔案
- mytimer.service
[Unit] Description=備份tomcat前一天的log [Service] Type=simple ExecStart=/root/sliceCatalina.sh
- mytimer.timer
[Unit] Description=每天凌晨一點備份tomcat前一天的log [Timer] OnCalendar=*-*-* 01:00:00 Unit=mytimer.service [Install] WantedBy=multi-user.target
啟動定時任務
systemctl daemon-reload# 重新載入服務 systemctl enable mytimer.service systemctl enable mytimer.timer systemctl start mytimer.timer
檢視timer執行狀態
systemctl status mytimer.timer journalctl -f -u mytimer.timer # 檢視定時器執行日誌
關閉定時任務
systemctl disable mytimer.timer #關閉開機啟動(即刪除目錄連結) systemctl stop mytimer.timer # 關閉單元 systemctl stop mytimer.service
之後刪除timer 和Service檔案
systemctl daemon-reload # 重新載入配置
擴充套件
其實大家也看到了,timer的核心就是在[Timer]
這一個點上,只要理解了就能很輕易的編寫定時任務了,下面舉幾個例子讓大家理解。
-
每月26號的凌晨0點半執行一次:
OnCalendar=*-*-26 00:30:00
-
自定時器啟動10分鐘後間隔1小時執行一次
OnBootSec=10min OnUnitActiveSec=1h