很多教程都是使用crontab來實(shí)現(xiàn)定時(shí)功能西疤,但crontab在ubuntu下默認(rèn)并沒有安裝币绩。而systemd也能實(shí)現(xiàn)定時(shí)任務(wù)功能蜒简,所以就直接使用它了瘸羡,特在此作記錄。
需求:每天凌晨一點(diǎn)執(zhí)行一次腳本
我喜歡把自己寫的定時(shí)器放在/usr/lib/systemd/system目錄下搓茬,如果不存在則新建一個(gè)犹赖,便于管理。
Start
需要新建兩個(gè)文件
- mytimer.service
[Unit]
Description=備份tomcat前一天的log
[Service]
Type=simple
ExecStart=/root/sliceCatalina.sh
- mytimer.timer
[Unit]
Description=每天凌晨一點(diǎn)備份tomcat前一天的log
[Timer]
OnCalendar=*-*-* 01:00:00
Unit=mytimer.service
[Install]
WantedBy=multi-user.target
啟動(dòng)定時(shí)任務(wù)
systemctl daemon-reload # 重新加載服務(wù)
systemctl enable mytimer.service
systemctl enable mytimer.timer
systemctl start mytimer.timer
查看timer運(yùn)行狀態(tài)
systemctl status mytimer.timer
journalctl -f -u mytimer.timer # 查看定時(shí)器運(yùn)行日志
關(guān)閉定時(shí)任務(wù)
systemctl disable mytimer.timer #關(guān)閉開機(jī)啟動(dòng)(即刪除目錄鏈接)
systemctl stop mytimer.timer # 關(guān)閉單元
systemctl stop mytimer.service
之后刪除timer 和Service文件
systemctl daemon-reload # 重新加載配置
擴(kuò)展
其實(shí)大家也看到了卷仑,timer的核心就是在[Timer]
這一個(gè)點(diǎn)上峻村,只要理解了就能很輕易的編寫定時(shí)任務(wù)了,下面舉幾個(gè)例子讓大家理解锡凝。
- 每月26號(hào)的凌晨0點(diǎn)半執(zhí)行一次:
OnCalendar=*-*-26 00:30:00
- 自定時(shí)器啟動(dòng)10分鐘后間隔1小時(shí)執(zhí)行一次
OnBootSec=10min OnUnitActiveSec=1h