一、查看定時任務
- 使用 cron
查看當前用戶的定時任務:
bash
crontab -l # 查看當前用戶的cron任務
查看系統級定時任務:
bash
系統級任務通常存放在以下位置:
cat /etc/crontab # 系統主配置文件
ls /etc/cron.d/ # 系統級任務片段
ls /etc/cron.hourly/ # 每小時執行的任務
ls /etc/cron.daily/ # 每天執行的任務
ls /etc/cron.weekly/ # 每周執行的任務
ls /etc/cron.monthly/ # 每月執行的任務
2. 使用 systemd timer
查看已激活的定時器:
bash
systemctl list-timers --all # 列出所有定時器
3. 查看日志
定時任務執行日志通常位于:
bash
grep cron /var/log/syslog # Debian/Ubuntu
grep cron /var/log/cron # CentOS/RHEL
journalctl -u cron.service # 使用journalctl查看日志
二、設置定時任務
- 使用 cron
編輯當前用戶的定時任務:
bash
crontab -e # 進入編輯模式,添加任務后保存退出
cron語法格式:
示例:
bash
0 3 * * * /path/to/backup.sh # 每天3點執行備份腳本
*/5 * * * * /path/to/check.sh # 每5分鐘執行一次
@daily /path/to/cleanup.sh # 每天午夜執行(等價于 0 0 * * *)
系統級任務:
直接編輯 /etc/crontab 或在 /etc/cron.d/ 下添加配置文件(需要root權限)。
- 使用 systemd timer
步驟:
創建服務單元文件(如 myjob.service):
ini
[Unit]
Description=My Custom Job
[Service]
ExecStart=/path/to/script.sh
保存到 /etc/systemd/system/myjob.service。
創建定時器單元文件(如 myjob.timer):
ini
[Unit]
Description=Run myjob daily
[Timer]
OnCalendar=--* 03:00:00 # 每天3點執行
Persistent=true # 錯過任務后立即補執行
[Install]
WantedBy=timers.target
保存到 /etc/systemd/system/myjob.timer。
啟用并啟動定時器:
bash
systemctl daemon-reload
systemctl enable myjob.timer
systemctl start myjob.timer
三、注意事項
環境變量:cron 默認使用精簡環境變量,建議在腳本中使用絕對路徑或在crontab中設置 PATH。
權限:系統級任務需root權限,用戶級任務通過 crontab -e 設置。
調試:使用 tail -f /var/log/cron 或 journalctl -f 實時監控任務執行情況。