crontab可以在指定的時間執(zhí)行一個shell腳本以及執(zhí)行一系列Linux命令
例如:服務(wù)器管理員定時備份數(shù)據(jù)庫數(shù)據(jù)洛口、日志等
注意給需要執(zhí)行的腳本分配權(quán)限 chmod +x /home/lucky/myfile.sh
1、常用命令
crontab –e //修改 crontab 文件芦拿,如果文件不存在會自動創(chuàng)建。
crontab –l //顯示 crontab 文件族跛。
crontab -r //刪除 crontab 文件莱没。
crontab -ir //刪除 crontab 文件前提醒用戶。
service crond status //查看crontab服務(wù)狀態(tài)
service crond start //啟動服務(wù)
service crond stop //關(guān)閉服務(wù)
service crond restart //重啟服務(wù)
service crond reload //重新載入配置
2厢钧、基本格式
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘00~59 每分鐘用*或者 */1表示
第2列表示小時00~23(0表示0點(diǎn))
第3列表示日期01~31
第4列表示月份01~12
第5列標(biāo)識號星期0~6(0表示星期天)
第6列要運(yùn)行的命令
部分舉例:
1、在 凌晨00:10運(yùn)行
10 0 * * * /home/swz/aa.sh
2嬉橙、每個工作日23:59都進(jìn)行備份作業(yè)早直。
59 23 * * 1,2,3,4,5 /home/swz/aa.sh 或者 59 23 * * 1-5 /home/swz/aa.sh
3、每分鐘運(yùn)行一次命令
*/1 * * * * /home/swz/aa.sh
4市框、每個月的1號 14:10 運(yùn)行
10 14 1 * * /home/swz/aa.sh
5霞扬、每10分鐘定時請求一個地址
0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php
正確、錯誤日志的輸出是否寫入到文件方法:
1.不輸出任何內(nèi)容(建議使用方法一)
*/1 * * * * /root/XXXX.sh >/dev/null 2>&1
或
*/1 * * * * /root/XXXX.sh &>/dev/null //&表示任何內(nèi)容
2.將正確和錯誤日志都輸出到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1
3.只輸出正確日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log
或
*/1 * * * * /root/XXXX.sh 1> /tmp/load.log //1可以省略
4.只輸出錯誤日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh 2> /tmp/load.log
部分解釋:
/dev/null 代表空設(shè)備文件
代表重定向到哪里
1 表示stdout標(biāo)準(zhǔn)輸出枫振,系統(tǒng)默認(rèn)值是1喻圃,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr標(biāo)準(zhǔn)錯誤
& 表示等同于的意思,2>&1粪滤,表示2的輸出重定向等同于1
加鎖腳本寫法:
*/30 * * * * cd /home/homework/script && flock -xn dataSync.lock /home/homework/php/bin/php dataSync.php >> dataSync.log 2>&1
秒級腳本寫法:
#!/bin/bash
step=10 #間隔的秒數(shù)斧拍,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
$(cd /home/homework/script && flock -xn dataSync.lock /home/homework/php/bin/php dataSync.php)
sleep $step
done
exit 0