Ubuntu定時器使用教程:Systemd與Cron兩種方法
Systemd是Ubuntu的初始化系統,其內置的systemd-timers子系統提供了精準、靈活的定時任務管理功能,支持依賴管理、日志集成等特性。
服務單元文件用于指定定時任務要執行的命令或腳本。
sudo權限創建服務文件(以mytask.service為例):sudo nano /etc/systemd/system/mytask.service/path/to/your/script.sh替換為實際腳本路徑):[Unit]
Description=My Custom Timer Service # 任務描述
[Service]
ExecStart=/path/to/your/script.sh # 要執行的命令(需絕對路徑)
nano按Ctrl+O保存,Ctrl+X退出)。定時器單元文件用于設置任務的執行時間,支持OnCalendar(日歷時間)、OnBootSec(開機后延遲)等多種觸發方式。
mytask.timer):sudo nano /etc/systemd/system/mytask.timerOnCalendar格式):[Unit]
Description=Run My Task Daily at 8:00 AM # 定時器描述
[Timer]
OnCalendar=*-*-* 08:00:00 # 每天8點觸發(格式:年-月-日 時:分:秒)
Persistent=true # 若錯過觸發時間,下次啟動時立即執行
[Install]
WantedBy=timers.target # 關聯到timers.target(系統定時器服務)
sudo systemctl daemon-reloadsudo systemctl enable mytask.timersudo systemctl start mytask.timersudo systemctl status mytask.timer使用journalctl命令查看定時任務的執行日志(替換mytask.service為你的服務名):
sudo journalctl -u mytask.service -f
(-f表示實時跟蹤日志,-u指定服務單元)
OnCalendar示例*/5 * * * *0 3 * * *0 9 * * 10 12 1 * *0 18 * * 1-5Cron是Linux系統的經典定時任務工具,通過crontab命令管理,適合簡單的周期性任務。
sudo apt update && sudo apt install cronsudo systemctl start cronsudo systemctl enable cronnano):crontab -e分鐘 小時 日 月 星期 命令),例如:# 每分鐘將當前時間寫入日志文件
* * * * * date >> /home/username/time.log
# 每天凌晨2點執行備份腳本
0 2 * * * /home/username/backup.sh >> /home/username/backup.log 2>&1
(>>表示追加輸出,2>&1將錯誤輸出重定向到標準輸出)crontab -lcrontab -rsudo crontab -u username -echmod +x /path/to/script.sh)。PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)。>> /path/to/logfile.log 2>&1),便于排查問題。通過以上教程,你可以根據需求選擇合適的方法,在Ubuntu上輕松創建和管理定時任務。