1、迴圈執行的計畫任務linux下面有atd和crond兩種計畫任務,其中,atd服務使用的at命令只能執行一次,而crond服務使用的crontab定義的命令,是迴圈作用的,所以crond才符合我們的要求。
crontab支援兩種狀態:一、直接編寫計畫任務;二、使用目錄的方式,放在目錄裡面的指令碼(或系統命令的軟鏈結)都會定時執行。
檢測cron的安裝情況
#rpm -qa|grep cron
啟動守護程序
#service crond start
2、可以使用的使用者
預設情況下,系統中可以登陸的使用者,都可以使用crontab定義計畫任務。不過,可以通過下面兩個檔案限制許可權:
/etc/cron.allow:
將可以使用 crontab 的賬號寫入其中,若不在這個檔案內的使用者則不能使用 crontab;
/etc/cron.deny:
將不可以使用 crontab 的賬號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用 crontab。
3、直接使用crontab編輯計畫任務:
命令:crontab [-u username] [-l|-e|-r]
引數:-u :通過-u幫其它使用者建立/移除 crontab;
-e :編輯 crontab 的內容
-l :檢視 crontab 的內容
-r :移除 crontab 的所有內容(是全部的內容,如果只是刪除某個,用-e編輯即可)
內容格式:
* * * * * 命令
前面的五個*號,表示分、時、日、月、周,如:
代表意義 分鐘 小時 日期 月份 周
數字範圍 0-59 0-23 1-31 1-12 0-7
*號代表任何時間都接受的意思,任意。
*號之間用空格分開,如果是一段範圍,用-號連線;如果是隔開幾個時間,用,號表示。
另外,命令必須是編寫計畫任務的使用者有許可權執行的,並且最後用絕對路徑。
例如:#whereis crontab
#man crontab
#crontab -e
59 23 1 5 * mail linuxing < /home/test.txt
每在5月1日,23點59分就把/home/test.txt的內容作為郵件發給linuxing使用者
*/5 * * * * /opt/test.sh
每5分鐘就執行一次/opt/test.sh指令碼
0 3,6 * * * /usr/local/bin/test.sh
每在3點和6點整點都執行/usr/local/bin/test.sh命令
0 8-12 * * * /root/backup.sh
8 點到 12 點之間的每小時的0分都執行/root/backup.sh
4、基於目錄的方式執行計畫任務
對於系統的計畫任務,已經在/etc/crontab裡面定義,採用的就是基於目錄的方式。系統會定時讀取該檔案,並根據裡面的定義執行命令。
可以使用vi直接編寫/etc/crontab檔案,其中格式如下:
#man 5 crontab
#cat /etc/crontab
shell=/bin/bash #使用的shell
path=/sbin:/bin:/usr/sbin:/usr/bin #預定義的path路徑
mailto=root #出現問題發email給該使用者
home=/ #家目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly #每小時的目錄
02 4 * * * root run-parts /etc/cron.daily #每天
22 4 * * 0 root run-parts /etc/cron.weekly #每週日
42 4 1 * * root run-parts /etc/cron.monthly #每個月1號
分 時 日 月 周 執行者身份 命令
可以看到前面的五個引數的定義和直接編輯計畫任務是一樣的,增加了執行的使用者定義和run-parts引數。
run-parts後面跟的是目錄名稱,例如:/etc/cron.hourly,表示每小時01分就到/etc/cron.hourly目錄中執行目錄下的所有可執行檔案;當然,目錄是可以自己定義的。
如果你需要增加系統的計畫任務,只需要在對應的目錄新增執行檔案即可,例如:我需要在每天都執行updatedb的操作,則我只需要把/usr/bin/updatedb的執行命令鏈結到/etc/cron.daily目錄就可以了。
同樣的,如果不需要使用目錄的方式,也可以使用如下的方式:
02 01 * * * root /root/test.sh
也就是沒有了run-parts,後面就直接跟命令的絕對路徑
5、注意事項
如果使用crontab編輯計畫任務或直接修改/etc/crontab檔案後,計畫任務沒有生效,可能需要重啟一下crond服務:service crond restart
當編寫/etc/crontab檔案的時候,不要漏了指定執行計畫任務的使用者,這是和直接用crontab -e編輯不同的。
某使用者(如root)用crontab -e編輯的計畫任務存放在/var/spool/cron/root,這個檔案下。但最好不要直接編輯他,因為crond執行的時候,會在/tmp目錄中建立需要的臨時檔案,直接編輯會對此有影響,甚至出錯。
cron執行的每一項工作都會被紀錄到/var/log/cron這個日誌檔案中,可以從這個檔案檢視命令執行的狀態
linux中計畫任務的安排cron
1 迴圈執行的計畫任務 linux下面有atd和crond兩種計畫任務,其中,atd服務使用的at命令只能執行一次,而crond服務使用的crontab定義的命令,是迴圈作用的,所以crond才符合我們的要求。crontab支援兩種狀態 一 直接編寫計畫任務 二 使用目錄的方式,放在目錄裡面的指令碼...
cron計畫任務
1.列出計畫列表 crontab l u mysql 具體的檔案放在 var spool cron root 使用者 2.修改計畫 crontab e 3.刪除當前 crontab 檔案 crontab r 4.計畫任務意思 第1列分鐘1 59 第2列小時1 23 0表示子夜 第3列日1 31 第4...
計畫任務cron
原定的計畫任務 0 0 cd preload nohup sh preload4.sh ip.list dev null 2 1 缺省會在00 00點準時做預載入 指令碼名稱preload4.sh 預載入檔案 txt 預載入裝置 ip.list 客戶定期會有預載入功能 每次只需要登陸裝置 更換 tx...