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