Linux crontab 自動排程完整教學

Linux crontab 自動排程完整教學

Linux crontab 是 Linux 系統中最常用的排程工具,可以讓使用者指定特定時間自動執行命令或腳本,實現日常備份、日誌清理、例行維護等工作自動化。本文將從 crontab 指令、排程內容、欄位說明、實務案例到進階應用技巧全面介紹。

crontab 指令詳解

指令用途範例
crontab -e編輯當前使用者的 crontab 排程新增或修改排程
crontab -l列出當前使用者排程檢視所有排程
crontab -r刪除當前使用者排程刪除所有排程
crontab -i刪除前提示確認crontab -i -r
crontab -u 使用者操作其他使用者排程(需 root 權限)crontab -u jack -l
crontab file.txt用指定檔案建立或覆蓋排程crontab backup.txt

編輯排程內容

使用 crontab -e 編輯排程時,每行代表一個任務,格式如下:


MIN HOUR DOM MON DOW CMD

前五個欄位為時間欄位,第六個欄位開始是要執行的命令或腳本。

五欄位時間說明

欄位意義合法值範例
分鐘 (MIN)指定分鐘0–5915(15 分鐘)、*/10(每 10 分鐘)
小時 (HOUR)指定小時0–232(凌晨 2 點)、*/4(每 4 小時)
日 (DOM)指定日期1–311(每月 1 號)、*/2(隔日)
月 (MON)指定月份1–121-6(1 月–6 月)、*(每月)
星期 (DOW)指定星期0–7(0、7 表示週日)1-5(週一到五)、0(週日)
  • * 任意合法值
  • / 步進值,如 */5 每 5 分鐘
  • - 範圍值,如 1-5
  • , 指定多個值,如 1,15,30
  • LW# 進階特殊用法

實務範例

範例指令說明
0 2 * * * /home/user/backup.sh每天凌晨 2 點執行自動備份。
30 1 * * 1 /home/user/weekly_report.sh每週一凌晨 1:30 生成報表。
0 0 1 * * /home/user/monthly.sh每月 1 號午夜執行月度任務。
15 14 1 * * /home/user/mail_send.sh每月 1 號 14:15 發送郵件。
0 */6 * * * /home/user/log_clean.sh每 6 小時清理日誌。

進階應用技巧

應用技巧範例指令說明
多任務同時執行0 2 * * * /home/user/backup.sh && /home/user/log_clean.sh使用 && 連接多個命令,前一個成功才執行下一個。
步進與範圍設定*/10 8-18 * * 1-5 /home/user/task.sh每週一到五,上午 8 點到 18 點,每 10 分鐘執行 task.sh。
指定環境變數0 0 * * * PATH=/usr/local/bin:/usr/bin:/bin /home/user/script.sh設定執行環境的 PATH 或其他環境變數。
將輸出寫入日誌0 1 * * * /home/user/script.sh >> /home/user/script.log 2>&1將標準輸出與錯誤輸出都寫入 log 檔,方便除錯。
指定特定用戶執行0 3 * * * root /home/user/backup.sh在 /etc/crontab 或系統排程中指定使用者,非自己身份也能執行。
條件執行(檢查檔案存在)0 4 * * * [ -f /home/user/file.txt ] && /home/user/script.sh先檢查檔案是否存在,存在才執行命令。

FAQ 常見問題

crontab 排程沒有執行怎麼辦?

先確認 cron 服務是否啟動,檢查指令路徑、腳本權限與使用者身份是否正確,可查看系統日誌 (/var/log/cron 或 /var/log/syslog)。

crontab 可以執行 Python 腳本嗎?

可以,只要指定完整 Python 路徑與腳本位置即可,如 /usr/bin/python3 /home/user/script.py,並確認執行權限。

如何查看目前排程?

使用 crontab -l 列出當前使用者排程,可搭配 grep 篩選特定任務。

如何刪除 crontab 排程?

使用 crontab -r 刪除所有使用者排程,建議先用 crontab -l > backup.txt 做備份。

如何設定每週或每月任務?

指定日期或星期欄位即可,例如每週五 * * * * 5

如何排程多任務?

每行寫一個任務即可,cron 會逐行執行,也可使用腳本批次加入多個任務。

    PAGE TOP