👨‍💻簡介

什麼是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

範例

  1. 查看自己的crontab
crontab -l
  1. 查看指定用戶的crontab
sudo crontab -u alan -l
  1. 編輯crontab
crontab -e
  1. 編輯指定用戶的crontab
sudo crontab -u alan -e
  1. 刪除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

Reference