Crontab(Cron Table)是Linux系統中用于周期性執行定時任務的核心工具,通過crond
(Cron守護進程)監聽并執行預設任務。它廣泛應用于日志清理、數據備份、腳本運行等場景,支持用戶級和系統級任務配置。
Crontab的每條任務由6個字段組成(部分系統支持@
特殊字符串簡化),格式如下:
* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─── 星期(0-7,0和7均代表周日)
│ │ │ └───── 月份(1-12)
│ │ └─────── 日(1-31)
│ └───────── 小時(0-23)
└─────────── 分鐘(0-59)
*
、,
、-
、/
),用于靈活設置時間間隔。/usr/bin/ls
而非ls
),避免因cron環境變量缺失導致任務失敗。字段 | 取值范圍 | 說明 |
---|---|---|
分鐘 | 0-59 | 每分鐘的刻度 |
小時 | 0-23 | 24小時制 |
日(月份中) | 1-31 | 需注意月份的實際天數 |
月 | 1-12 | 或使用英文縮寫(如Jan) |
星期 | 0-7(0和7均代表周日) | 或使用英文縮寫(如Sun) |
*
:匹配所有可能值(如* * * * *
表示每分鐘執行)。,
:分隔多個離散值(如1,15,30 * * * *
表示每小時的第1、15、30分鐘執行)。-
:指定連續范圍(如8-17 * * * *
表示每天8點到17點每小時執行)。/
:設置間隔頻率(如*/5 * * * *
表示每5分鐘執行一次,等價于0,5,10,...,55 * * * *
)。為簡化時間配置,Crontab支持以下預定義特殊字符串(替代前5個時間字段):
字符串 | 含義 | 等效時間表達式 |
---|---|---|
@reboot |
系統啟動時執行一次 | — |
@yearly |
每年執行一次 | 0 0 1 1 * |
@annually |
同@yearly |
0 0 1 1 * |
@monthly |
每月執行一次 | 0 0 1 * * |
@weekly |
每周執行一次 | 0 0 * * 0 |
@daily |
每天執行一次 | 0 0 * * * |
@midnight |
同@daily |
0 0 * * * |
@hourly |
每小時執行一次 | 0 * * * * |
示例:@daily /usr/bin/clear_temp
表示每天午夜清空臨時文件。
crontab -e
執行后會打開默認編輯器(如vi/nano),添加或修改任務后保存即可生效。
crontab -l
列出當前用戶所有的定時任務。
crontab -r
注意:此操作會刪除所有任務,無確認提示。若需確認,可添加-i
參數(crontab -i -r
)。
crontab -u username -e
例如,編輯tom
用戶的crontab:sudo crontab -u tom -e
。
/home/user/backup.sh
),避免因cron環境變量(如PATH
)不同導致找不到命令。$HOME
、$PATH
),若任務依賴環境變量,需在命令前顯式設置(如在腳本開頭添加export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
)。/etc/crontab
或/etc/cron.d/
下的文件。/path/to/command > /tmp/log.txt 2>&1
)。