定時任務-crontab
阿新 • • 發佈:2021-12-02
定時任務-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 指定其他使用者