1. 程式人生 > >Linux crontab任務調度

Linux crontab任務調度

ont 調度 bruce res 分隔 cnblogs tar name roo

一、crontab說明

Linux crontab任務調度是在規定的時間頻率內去執行相應的任務。

二、crontab文件詳情

1、crontab文件在Linux中的/etc/crontab

2、查看crontab文件 # vi /etc/crontab 文件描述如下

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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

三、crontab 命令說明

crontab [-u username] [-l|-e|-r]

參數:

-u: 只有root才能進行這個任務,也即幫其他用戶新建/刪除crontab工作調度;

-e: 編輯crontab 的工作內容;

-l: 查閱crontab的工作內容;

-r: 刪除所有的crontab的工作內容,若僅要刪除一項,請用-e去編輯。

特殊字符 代表意義
*(星號) 代表任何時刻都接受的意思。舉例來說,範例一內那個日、月、周都是*,就代表著不論何月、何日的禮拜幾的12:00都執行後續命令的意思。
,(逗號)

代表分隔時段的意思。舉例來說,如果要執行的工作是3:00與6:00時,就會是:

0 3,6 * * * command

時間還是有五列,不過第二列是 3,6 ,代表3與6都適用

-(減號) 代表一段時間範圍內,舉例來說,8點到12點之間的每小時的20分都進行一項工作:

20 8-12 * * * command

仔細看到第二列變成8-12.代表 8,9,10,11,12 都適用的意思

/n(斜線) n代表數字,即是每隔n單位間隔的意思,例如每五分鐘進行一次,則:

*/5 * * * * command

用*與/5來搭配,也可以寫成0-59/5,意思相同

四、實例

crontab -e ;打開當前用戶調度編輯

0 */2 * * * /sbin/service httpd restart   意思是每兩個小時重啟一次apache 
50 7 * * * /sbin/service sshd start   意思是每天7:50開啟ssh服務
50 22 * * * /sbin/service sshd stop   意思是每天22:50關閉ssh服務
0 0 1,15 * * fsck /home   每月1號和15號檢查/home 磁盤
1 * * * * /home/bruce/backup   每小時的第一分執行 /home/bruce/backup這個文件
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} ;#每周一至周五3點鐘,在目錄/home中,查找文件名為*.xxx的文件,並刪除4天前的文件。
30 6 */10 * * ls ;  #每月的1、11、21、31日是的6:30執行一次ls命令

最後感謝下面兩位博主的分享

Linux任務調度運行機制參考 http://blog.csdn.net/zhongbeida_xue/article/details/51280292

Linux任務調度操作參考 http://www.cnblogs.com/mingforyou/p/3930636.html

Linux crontab任務調度