今天簡單記錄下crontab的配置php
/etc/crontab 文件 這是系統運行的調度任務 /var/spool/cron 目錄 用戶自定義的crontab任務放在此目錄下 ls –lrt /etc/cron* /etc/cron.deny 表示不能使用crontab命令的用戶 /etc/cron.allow 表示能使用crontab命令的用戶 默認狀況下,cron.allow不存在,若是都存在,cron.allow優先
具體可 crontab --help 或者 man crontab|more crontab –l //查看當前用戶的定時任務 crontab –e //編輯當前用戶的定時任務 crontab –r //刪除當前用戶的定時任務
59 23 * * * /home/xxx/crontab/test.sh > /dev/null 2>&1 & 前6列暫且用C1 - C6表示 C1 分 (1-59,0表示整點) C2 時 (1-23,0表示子夜) C3 日 (1-31) C4 月 (1-12) C5 星期 (0-6,0表示星期天,1表示星期一,以此類推) C6 要運行的命令 前5列表示 命令執行的頻率,最小頻率是每分鐘一次,其中Cn的值可用四種形式表示: * , */n , T1-T2 , a,b,c 當C1 爲 * 時,表示每分鐘都要執行命令 當C1 爲 */n時,表示每隔n分鐘執行一次命令 當C1 爲 T1-T2時,表示從 T1分鐘 到 T2分鐘時間內都要執行命令 當C1 爲 a,b,c 時,表示第 a,b,c 分鐘都要執行命令 示例調用: 12 12 * * * /home/xxx/crontab/test.sh >/dev/null 2>&1 表示天天的12點12分 執行腳本 */2 * * * * /home/xxx/crontab/test.sh >/dev/null 2>&1 表示每隔2分鐘 執行一次腳本 0 23 * * 1-5 /home/xxx/crontab/test.sh >/dev/null 2>&1 表示每週一到週五的23點 執行一次腳本 0 19 * * 0 mail -s "xxx" xxx@mail.com < /tmp/maildata 表示每週日的19點 發送郵件到 xxx@mail.com
關於命令中 /dev/null 2>&1 的解釋 0 表示鍵盤輸入 1 表示標準輸出 2 表示錯誤輸出 1.建立test.sh,內容以下 #! /bin/bash echo "time is " `date` 2.添加定時任務 * * * * * /home/xxx/crontab/test.sh > /home/xxx/crontab/test.log & 默認是1,和下面方法一致 * * * * * /home/xxx/crontab/test.sh 1> /home/xxx/crontab/test.log & * * * * * /home/xxx/crontab/test.sh > /home/xxx/crontab/test.log 2>&1 & 3.說明 1表明,標準輸出,因此上述命令會將腳本的輸出結果,輸出到後面指定的log文件中,而不是打印到屏幕; 2表明,錯誤輸出,&1表示文件的描述,這裏表示腳本執行的錯誤信息重定向到1(標準輸出) 而1已經重定向到指定的log文件中,因此信息都會輸出到log文件 不能寫成 2>1 ,缺乏&,會認爲是錯誤信息輸出到名稱爲 1 文件中
1.shell中需設置必要的環境變量 crontab的環境變量默認不包含系統當前用戶的環境,因此需添加必要的環境變量 2.儘可能採用完整路徑方法,避免使用相對路徑 3.避免腳本的重複執行 if(exec("ps -ef |grep 'php'|grep 'updateScript'|grep -v 'grep' |wc -l ") > 2){ die(); } grep -v 'grep' 表示結果去過濾掉 grep 那一行 wc -l 表示統計知足條件的行數 這樣就能夠判斷 php進程中,名爲 updateScript 的腳本 是否已經執行了
http://www.cnblogs.com/kerrycode/p/3238346.html http://www.cnblogs.com/hazir/p/sudo_command.html