Linux 定時任務[crontab]
linux-crontab
👨💻簡介
什麼是crontab
Crontab 是一個 Unix 系統下的定時任務管理工具。它允許用戶自動在特定時間執行指令或程式,而無需人工干預。Crontab 文件中的每一行都代表一個定時任務,其中指定了任務執行的時間,以及要執行的指令或程式。
crontab用在哪
適用於週期性的任務,例如每天定時備份檔案,或者每周定時發送報表等等。使用 Crontab 可以大大簡化這些任務的管理,避免因人為錯誤而導致的問題。
語法
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]
選項
參數 | 說明 |
---|---|
-e UserName | 編輯crontab |
-l UserName | 顯示當前用戶的crontab |
-r UserName | 移除當前用戶的crontab |
-v UserName | 顯示當前用戶的cron jobs狀態 |
格式
# ┌───────────── 分鐘 (0 - 59)
# │ ┌─────────── 小時 (0 - 23)
# │ │ ┌───────── 日 (1 - 31)
# │ │ │ ┌─────── 月 (1 - 12)
# │ │ │ │ ┌───── 星期幾 (0 - 7,0 是週日,6 是週六,7 也是週日)
# │ │ │ │ │
# * * * * * /path/to/command
範例
- 查看自己的crontab
crontab -l
- 查看指定用戶的crontab
sudo crontab -u alan -l
- 編輯crontab
crontab -e
- 編輯指定用戶的crontab
sudo crontab -u alan -e
- 刪除crontab
crontab -r
擴展
參數 | 說明 | crontab格式 |
---|---|---|
@reboot | 每次重開機執行一次 | |
@yearly | 每年執行一次 | 0 0 1 1 * |
@annualy | 每年執行一次 | 0 0 1 1 * |
@monthly | 每月執行一次 | 0 0 1 * * |
@weekly | 每週執行一次 | 0 0 * * 0 |
@daily | 每天執行一次 | 0 0 * * * |
@hourly | 每小時執行一次 | 0 * * * * |
限制特定用戶執行crontab
- 使用場景:系統安全性考量
- 使用到的檔案
/etc/cron.allow
:白名單/etc/cron.deny
:黑名單
如果
/etc/cron.allow
與/etc/cron.deny
兩個設定檔都不存在,則就只有系統管理者root
能夠使用crontab
。
- 範例:允許user1可以用crontab
echo "user1" > /etc/cron.allow