1. 程式人生 > 其它 >定時任務-crontab

定時任務-crontab

定時任務-crontab

命令

crontab [-u user] file
crontab -e
crontab -l
crontab -r
crontab -i

引數:
 -e 編輯定時任務  操作和vim一樣
 -l 檢視定時任務列表  
 -r 刪除定時任務; 從 /var/spool/cron 目錄中,刪除某個使用者的 crontab 檔案,如果不指定使用者,則預設刪除當前使用者的 crontab 檔案
 -i 在刪除使用者的crontab檔案時給確認提示

crontab 檔案格式

1、格式

第1列:分鐘,0~59
第2列:小時,0~23
第3列:日期,1~31
第4列:月份,1~12
第5列:星期,0~7(0和7表示星期天)
第6列:要執行的命令(如果有多個命令用 && 隔開)

亦可以通過cat /etc/crontab 檢視系統給的提示

[root@localhost cron]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

You have new mail in /var/spool/mail/root

2、特殊字元

星號(*) :代表所有可能的值,例如,month欄位如果是星號,則表示在滿足其它欄位的制約條件後,每月都執行該命令操作;

逗號(,) :可以用逗號隔開的值,指定一個多元素的列表,例如:1,2,5,7,8,9

中槓(-) :可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示:2,3,4,5,6

正斜線(/) :可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。

示例:

1、檢視當前使用者的當前定時任務

表示一分鐘執行一次 輸出hello world

[root@localhost cron]# crontab -l
*/1 * * * *  echo "hello world"
You have new mail in /var/spool/mail/root
[root@localhost cron]#

2、編輯定時任務:

[root@localhost cron]# crontab -e

*/1 * * * *  echo "hello world"
0 10 * * * /bin/sh /home/b.sh  表示每天10天執行指定的指令碼

3、刪除定時任務

不要輕易執行,這個命令刪除當前使用者的所有定時任務

[root@localhost cron]# crontab -r
[root@localhost cron]# crontab -l
no crontab for root
[root@localhost cron]#

4、提示是否確定刪除 -i

[root@localhost cron]# crontab -ir
crontab: really delete root's crontab?

crontab語法:

[root@localhost cron]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

You have new mail in /var/spool/mail/root

備註:
1) * 表示任意的(分、時、日、月、周)時間都執行
2) - 表示一個時間範圍段, 如5-7點
3) , 表示分隔時段, 如6,0,4表示週六、日、四
4) /1 表示每隔n單位時間, 如*/10 每10分鐘 表示頻率

練習

00 02 * * * ls #每天的凌晨2點整執行ls命令
00 02 1 * * ls #每月的1日的凌晨2點整執行
00 02 14 2 * ls #每年的2月14日凌晨2點執行
00 02 * * 7 ls #每週天的凌晨2點整執行
00 02 * 6 5 ls #每年6月每個週五凌晨2點執行
00 02 14 * 7 ls #每月14日或每週日的凌晨2點都執行
00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2點執行
*/10 02 * * * ls #每天凌晨2點,每隔10分鐘執行一次
* * * * * ls #每分鐘都執行
00 00 14 2 * ls #每年2月14日的凌晨執行命令
*/5 * * * * ls #每隔5分鐘執行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2點執行
00 02 1-8 * * ls # 每個月1-8號凌晨2點都執行
0 21 * * * ls #每天晚上21:00執行
45 4 1,10,22 * * ls #每月的1,10,22號的4:45執行
45 4 1-10 * * ls #每月的1到10號的4:45執行
3,15 8-11 */2 * * ls #每隔兩天的上午8點到11點的第3和第15分鐘執行
0 23-7/1 * * * ls #晚上11點到早上7點之間,每隔一個小時執行
15 21 * * 1-5 ls #週一到週五每天晚上21:15執行

crontab 相關命令
crontab -e 編輯定時任務
crontab -l 檢視定時任務
crontab -r 刪除定時任務
crontab -u 指定其他使用者