Debian系統定時任務的執行頻率可通過兩種主要工具配置:傳統crontab
(適用于分鐘級及以上頻率)和systemd定時器
(支持更靈活的時間間隔)。以下是具體方法:
crontab
是Debian默認的定時任務管理工具,通過5字段時間表達式定義執行頻率,格式為:分鐘 小時 日期 月份 星期 命令
。
* * * * * /path/to/command
(*
表示“每”);*/5 * * * * /path/to/command
(*/n
表示“每n單位”);0 * * * * /path/to/command
(0
表示小時的第0分鐘);0 0 * * * /path/to/command
(0 0
表示00:00);0 0 * * 0 /path/to/command
(0
表示星期日);0 0 1 * * /path/to/command
(1
表示每月1號)。,
:分隔多個時間點(如0,15,30,45 * * * *
表示每15分鐘);-
:定義時間范圍(如0 9-17 * * 1-5
表示工作日9:00-17:00每小時);/
:指定間隔(如*/10 * * * *
表示每10分鐘)。crontab -e
;crontab -l
;crontab -r
。systemd定時器
是Debian推薦的現代定時任務工具,支持秒級間隔和更復雜的時間規則(如“系統啟動后5分鐘執行”“任務激活后15分鐘再次執行”)。
/etc/systemd/system/
下創建.service
文件(如mytask.service
),內容如下:[Unit]
Description=My Scheduled Task
[Service]
ExecStart=/path/to/your/script.sh
/etc/systemd/system/
下創建.timer
文件(如mytask.timer
),通過OnCalendar
或OnBootSec
/OnUnitActiveSec
設置頻率:
[Unit]
Description=Run My Task hourly
[Timer]
OnCalendar=*-*-* *:00:00 # 每小時的第0分鐘
Persistent=true # 系統啟動后補做未執行的任務
[Install]
WantedBy=timers.target
[Unit]
Description=Run My Task every 15 minutes
[Timer]
OnBootSec=5min # 系統啟動后5分鐘第一次執行
OnUnitActiveSec=15min # 任務激活后15分鐘再次執行
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload # 重新加載systemd配置
sudo systemctl enable --now mytask.timer # 啟用并立即啟動定時器
systemctl list-timers --all # 查看所有定時器
systemctl status mytask.timer # 查看特定定時器詳情
OnCalendar
:基于日歷的時間表達式(如*-*-* 02:00:00
表示每天02:00);OnBootSec
:系統啟動后延遲的時間(如5min
);OnUnitActiveSec
:任務上次執行后間隔的時間(如1h
);Persistent=true
:確保系統重啟后補做未執行的任務。journald
(可通過journalctl -u mytask.timer
查看);sudo
編輯/etc/crontab
或/etc/systemd/system/
下的文件,用戶級任務用crontab -e
。