在 Linux 中,cron
(讀音為 /krɒn/)是一個用於排程自動執行任務的守護程序,常用於定時備份、更新、監控、寄信等自動化任務。這個功能來自 Unix 系統,是 Linux 中最重要的自動排程工具之一。
🔧 一、cron
的基本架構
Linux 的 cron
系統主要由兩部分組成:
-
crond:
cron daemon
,系統背景程式,負責檢查是否有任務需要執行。 -
crontab(cron table):使用者定義排程任務的表格。
📄 二、crontab 語法格式
crontab 檔案中的每一行代表一個排程任務,基本格式如下:
欄位位置 | 說明 | 範圍 |
---|---|---|
第 1 欄 | 分鐘 (minute) | 0 - 59 |
第 2 欄 | 小時 (hour) | 0 - 23 |
第 3 欄 | 日 (day) | 1 - 31 |
第 4 欄 | 月 (month) | 1 - 12 |
第 5 欄 | 星期 (weekday) | 0 - 7 (0 或 7 代表星期日) |
第 6 欄 | 要執行的命令 | shell command |
*
,代表「每一個」。⏱ 三、常見排程範例
crontab 語法 | 說明 |
---|---|
0 2 * * * /home/user/backup.sh | 每天凌晨 2 點執行 backup.sh |
*/10 * * * * /usr/bin/python3 script.py | 每 10 分鐘執行一次 Python 腳本 |
0 12 * * 1-5 echo "中午到了" | 每週一到週五中午 12 點顯示訊息 |
0 0 1 * * logrotate | 每月 1 號的凌晨執行 logrotate |
📂 四、crontab 管理指令
每個使用者(包含 root)都有自己的 crontab 表
🔒 五、crontab 權限與 log
權限控制檔:
-
/etc/cron.allow
-
/etc/cron.deny
若存在 cron.allow
,只有該檔中列出的使用者能使用 cron
。
執行記錄:
-
/var/log/syslog
或/var/log/cron
(依發行版而異)
📁 六、其他相關目錄
目錄名稱 | 說明 |
---|---|
/etc/crontab | 系統級排程,可設定特定使用者 |
/etc/cron.d/ | 可額外加入排程的設定檔案 |
/etc/cron.daily/ | 每日自動執行的腳本目錄 |
/etc/cron.hourly/ | 每小時執行 |
/etc/cron.weekly/ | 每週執行 |
/etc/cron.monthly/ | 每月執行 |
✅ 七、注意事項
-
建議指令寫絕對路徑,如
/usr/bin/python3
。 -
環境變數與
PATH
可能不同於平時登入 shell。 -
輸出錯誤可加上:
若你有具體的排程需求(例如每週清除檔案、自動備份 MySQL、每日寄送報表等),我可以幫你設計具體 crontab 設定範例!
沒有留言:
張貼留言