等待執行的test.php腳本,該腳本在本機環境可以執行,在linux上手動執行php test.php也可以執行
<code>$name='./log/20161025.txt'; if(file_exists($name)) { file_put_contents($name, '定时任务开始了'); }</code>
執行 crontab -e 編輯定時任務
<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>
我的嘗試:
執行ps -ef | grep cron,查看定時任務進程,可以看到一個進程,也就是說定時任務在運行,所以不存在定時任務沒有開啟的問題
執行/usr/sbin/service cron restart,重啟定時任務,cron.log中沒記錄,20161025.txt中也沒有內容
執行chomd +x test.php 增加權限,沒有效果
執行which php,返回/usr/bin/php php路徑沒錯
暫時找不到可能的原因,求高手思路
補充:
最後測試定時任務是可以執行的
<code>$name=__DIR__.'/log/20161025.txt'; if(file_exists($name)) { file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND); }</code>
用腳本的列印當前時間,這是每分鐘執行一次
等待執行的test.php腳本,該腳本在本機環境可以執行,在linux上手動執行php test.php也可以執行
<code>$name='./log/20161025.txt'; if(file_exists($name)) { file_put_contents($name, '定时任务开始了'); }</code>
執行 crontab -e 編輯定時任務
<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>
我的嘗試:
執行ps -ef | grep cron,查看定時任務進程,可以看到一個進程,也就是說定時任務在運行,所以不存在定時任務沒有開啟的問題
執行/usr/sbin/service cron restart,重啟定時任務,cron.log中沒記錄,20161025.txt中也沒有內容
執行chomd +x test.php 增加權限,沒有效果
執行which php,返回/usr/bin/php php路徑沒錯
暫時找不到可能的原因,求高手思路
補充:
最後測試定時任務是可以執行的
<code>$name=__DIR__.'/log/20161025.txt'; if(file_exists($name)) { file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND); }</code>
用腳本的列印當前時間,這是每分鐘執行一次
php路徑沒錯,但啟動定時任務時工作目錄不是你的php檔案所在目錄,所以你的程式碼要改下
<code>$name=__DIR__.'/log/20161025.txt'; if(file_exists($name)) { file_put_contents($name, '定时任务开始了'); }</code>
感覺是路徑不對,php腳本裡面的相對地址改成絕對路徑試試
PHP路徑沒錯,錯在PHP程式碼裡面的一些路徑,在寫命令列的程式時,盡量避免使用有依賴性的東西,例如相對目錄,
你這個錯就出在相對目錄上,你啟動crontab去執行你的php腳本前,先手動執行一次,就知錯在哪裡。
把你的相對路徑印一下。一定不是你想像中的路徑。
你可以locate 20161025.txt
,看下檔案有沒有產生。 locate
前先updatedb
。
確定一下你的權限問題 執行以下crontab -l確定你已經成功加入了定時任務
<code>[DongYao$ 19:28]➞ $crontab -l * * * * * /bin/echo `date` >> /var/log/test.log You have mail in /var/mail/DongYao [DongYao$ 19:39]➞ $ [root$ 19:37]➞ $tail -f /var/log/test.log Mon Oct 24 19:38:00 CST 2016 Mon Oct 24 19:39:00 CST 2016 </code>