在 Ubuntu 系統中,查看當前系統中已開啟的定時任務主要有以下幾種方式,分別針對不同類型的定時任務管理方式(如 crontab
、systemd timer
等):
查看服務器定時任務
一、查看用戶級別的 Crontab 任務
每個用戶都可以配置自己的定時任務:
crontab -l
查看其他用戶的定時任務:
sudo crontab -u 用戶名 -l
二、查看系統級別的 Crontab 任務
系統級任務配置通常放在以下幾個文件中:
cat /etc/crontab
或者:
ls /etc/cron.d/
cat /etc/cron.d/*
三、查看周期性目錄任務(cron.*
)
系統還有一些目錄用于按時間分類執行腳本:
ls /etc/cron.hourly/
ls /etc/cron.daily/
ls /etc/cron.weekly/
ls /etc/cron.monthly/
這些目錄下的腳本由 /etc/crontab
控制周期執行。
四、查看 systemd 定時任務(systemd timer
)
Systemd timers 是較現代的替代 cron 的方案。
列出所有的 timer:
systemctl list-timers --all
查看某個具體 timer 的詳情:
systemctl status your-timer-name.timer
或:
journalctl -u your-timer-name.timer
五、定時任務中時間說明
┌───────────── 分鐘 (0 - 59)
│ ┌─────────── 小時 (0 - 23)
│ │ ┌───────── 日期 (1 - 31)
│ │ │ ┌─────── 月份 (1 - 12)
│ │ │ │ ┌───── 星期幾 (0 - 7)(0 和 7 都表示星期天)
│ │ │ │ │
│ │ │ │ │
* * * * * → 表示“每天的 05:40 執行一次”
實現定時任務
命令步驟:
- 打開當前用戶的 crontab 編輯器:
crontab -e
- 在文件底部添加以下內容:
0 15 * * 1-5 curl -s https://xxxxxx #周一到周五每天下午3點請求接口
含義說明:
字段 | 含義 |
---|---|
0 | 分鐘,整點(第0分鐘) |
15 | 小時,下午3點 |
* | 每月的每天 |
* | 每年的每個月 |
1-5 | 周一到周五(1=Monday) |
curl -s | 靜默請求接口 |
如果你希望記錄日志,方便排錯,可以寫成:
0 15 * * 1-5 curl -s https://***** >> /var/log/cron_update.log 2>&1
確保 cron
服務正在運行(只需一次):
sudo systemctl status cron
如果看到 active (running)
,說明沒問題。如果不是,執行:
sudo systemctl start cron
sudo systemctl enable cron # 開機自動啟動
查看當前用戶的定時任務是否配置成功:
crontab -l
如果是用 root 或其他用戶配置的,可以分別查看:
sudo crontab -l -u root
sudo crontab -l -u www-data
查看日志是否正常執行(第二天三點后):
你設置的日志文件路徑為:
/var/log/cron_update.log
執行后可以查看它內容:
cat /var/log/cron_update.log
如你設置了日志,但文件沒生成,可能是:
-
目錄沒寫權限;
-
curl
命令有錯誤; -
網絡不通;
-
任務沒執行。
注意事項:
-
curl
命令必須在系統環境變量路徑中(通常默認有)。 -
如果接口有鑒權或要傳遞參數,請根據實際情況修改
curl
命令。 -
確保
cron
服務已啟動:sudo systemctl enable cron sudo systemctl start cron