Linux 定時執行shell腳本命令之crontab


crontab可以在指定的時間執行一個shell腳本以及執行一系列Linux命令

例如:服務器管理員定時備份數據庫數據、日志等

 

詳解:

常用命令:

crontab –e     //修改 crontab 文件,如果文件不存在會自動創建。 
crontab –l      //顯示 crontab 文件。 
crontab -r      //刪除 crontab 文件。
crontab -ir     //刪除 crontab 文件前提醒用戶。

service crond status     //查看crontab服務狀態
service crond start     //啟動服務 
service crond stop     //關閉服務 
service crond restart     //重啟服務 
service crond reload     //重新載入配置

 

基本格式 :

*  *  *  *  *  command
分 時  日  月  周  命令

第1列表示分鍾00~59 每分鍾用*或者 */1表示

第2列表示小時00~23(0表示0點)

第3列表示日期01~31

第4列表示月份01~12

第5列標識號星期0~6(0表示星期天)

第6列要運行的命令

 

部分舉例:

1、在 凌晨00:10運行

10 0 * * * /home/swz/aa.sh

2、每個工作日23:59都進行備份作業。

59 23 * * 1,2,3,4,5 /home/swz/aa.sh   或者  59 23 * * 1-5 /home/swz/aa.sh

3、每分鍾運行一次命令

*/1 * * * * /home/swz/aa.sh

4、每個月的1號 14:10 運行

10 14 1 * * /home/swz/aa.sh

5、每10分鍾定時請求一個地址

0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php

 

正確、錯誤日志的輸出是否寫入到文件方法:

1.不輸出任何內容(建議使用方法一)

*/1 * * * * /root/XXXX.sh >/dev/null 2>&1*/1 * * * * /root/XXXX.sh &>/dev/null    //&表示任何內容

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 代表空設備文件
> 代表重定向到哪里
1 表示stdout標准輸出,系統默認值是1,所以">/dev/null"等同於"1>/dev/null"
2 表示stderr標准錯誤
& 表示等同於的意思,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 #間隔的秒數,不能大於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM