cron 簡介linux
cron 是 UNIX, SOLARIS,LINUX 下的一個十分有用的工具。經過 cron 腳本能使計劃任務按期地在系統後臺自動運行。shell
cron 命令數據庫
crontab -e – 編輯該用戶的 crontab,當指定 crontab 不存在時新建。app
crontab -l – 列出該用戶的 crontab。ide
crontab -r – 刪除該用戶的 crontab。工具
crontab -u<用戶名稱> – 指定要設定 crontab 的用戶名稱。url
Linux Crontab 格式spa
表格: Crontab 字段與容許的值 (Linux Crontab)orm
cron 實例blog
1. 特定時間執行
cron 的基本用法是在特定的時間執行一項任務,以下是 6 月 10 上午 8:30 執行 Full backup shell script。 要注意的是時間字段採用的是 24 小時制,若是是下午 8 點,則改寫爲 20 點
30 08 10 06 * /home/ramesh/full-backup
30 – 第 30 分鐘
08 – 早上 8 點
10 – 10 號
06 – 第 6 個月 (6 月)
* – 一週的任何一天
2. 安排多個實例(好比一天執行兩次)
下面的增量備份腳本天天執行兩次。
天天於 11:00, 16:00 執行,逗號兩側的時間都會執行。
00 11,16 * * * /home/ramesh/bin/incremental-backup
00 – 第 0 分鐘 (每小時開時)
11,16 – 早上 11 點與下午 4 點
* – 天天
* – 每月
* – 一週的任何一天
3. 讓任務只在特定時間執行(好比僅當工做日時執行)
下面這個例子是天天 9:00-16:00 檢查數據庫狀態(包括週六)
00 09-18 * * * /home/ramesh/bin/check-db-status
00 – 第 0 分鐘 (每小時開時)
09-18 – 9 點, 10 點, 11 點, 12 點, 下午 1 點, 下午 2 點, 下午 3 點, 下午 4 點, 下午 5 點, 下午 6 點
* – 天天
* – 每月
* – 一週的任何一天
若是隻想工做日執行此操做
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
00 – 第 0 分鐘 (每小時開時)
09-18 – 9 點, 10 點, 11 點, 12 點, 下午 1 點, 下午 2 點, 下午 3 點, 下午 4 點, 下午 5 點, 下午 6 點
* – 天天
* – 每月
1-5 – 週一, 週二, 週三, 週四和週五 (工做日)
4. 如何查看 cron 定時任務
查看當前用戶定時任務
ramesh@dev-db$ crontab -l
查看 ROOT 用戶定時任務,用 root 登入 su-root,再執行 crontab -l
root@dev-db# crontab -l
no crontab for root
查看其它用戶定時任務
root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status
5. 如何編輯 cron 定時任務
ramesh@dev-db$ crontab -e
6. 安排每分鐘都執行定時任務
理論狀況下,沒有每分鐘都要執行的 shell,但下面這個例子,讓咱們更好的瞭解 crontab
* * * * * 命令
* 表明着全部可能取到的值,除了直接用 * 外,下面的幾個例子也較爲經常使用
當指定 */5 在分鐘字段,表明每五分鐘。
當指定 0-10/2 在分鐘字段,表明在前十分鐘的每兩分鐘
上面的例子對於其它四個字段一樣試用
7. 安排後臺每十分鐘執行定時任務
*/10 * * * * /home/ramesh/check-disk-space
有一些特殊的例子,能夠用關鍵字替代上述五個字段– reboot, midnight, yearly, hourly
8. 每年的第一分鐘執行定時任務(@yearly)
下面的例子將在每年的 1 月 1 日 0:00 執行
@yearly /home/ramesh/red-hat/bin/annual-maintenance
9. 每個月執行定時任務(@mothly)
下面的例子將在每個月 1 日 0:00 執行
@monthly /home/ramesh/suse/bin/tape-backup
10. 天天執行定時任務(@daily)
下面的例子將在天天 0:00 執行
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
11. 每次重啓時執行定時任務(@reboot)
@reboot CMD
12. 如何用 mail 關鍵字禁止/重定向 cron 的郵件
默認狀況下,crontab 將向佈置定時任務的管理員發送郵件,若是想重定向此用戶,添加並更新 MAIL
ramesh@dev-db$ crontab -l
MAIL="ramesh"
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
若是不想任何人接收,則直接將 MAIL 置空
13. 如何系秒每執行一個定時任務
沒法安排每秒執行,由於最小處理單元是分鐘,另外一方面,沒有什麼理由讓咱們每秒都執行一任務
14. cron 中的 PATH 變量
上面的例子都是用絕對的路徑
若是你想用相對的路徑,設置環境變量能夠在 crontab 增長
ramesh@dev-db$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
@yearly annual-maintenance
*/10 * * * * check-disk-space
15. 從 cron 文件中定義 cron 任務
除了直接編輯外,你也能夠先在一個文件中編輯好任務,再導入
ramesh@dev-db$ crontab -l
no crontab for ramesh
$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
ramesh@dev-db$ crontab cron-file.txt
ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
應用時要注意,此操做會刪除原有的cron任務