最近一個項目,需要用到一個定時任務,先說crontab的常用命令。
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數 crontab -l //列出某個用戶cron服務的詳細內容 crontab -r //刪除沒個用戶的cron服務 crontab -e //編輯某個用戶的cron服務
接下來我的調試過程
(1)編輯加入自己的命令
crontab -e //編輯某個用戶的cron服務
*/1 * * * * /usr/bin/php /var/send.php 每分鍾都執行一次
send.php
編輯如下
<?php echo 'this is a work'; ?>
沒有出現運行結果,於是乎,就去查看日志,結果在/var/log下沒有發現 cron.log文件,這我就納悶了,why?
經過研究發現原來日志服務器rsyslog沒有開啟對crontab的支持,接下來進入/etc/rsyslog.d/
cd /etc/rsyslog.d/ ls 20-ufw.conf 50-default.conf //會有連個文件
vim 50-default.conf
編輯如下:
找到 cron.* 所在行
# Default rules for rsyslog. # # For more information see rsyslog.conf(5) and /etc/rsyslog.conf # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog cron.* /var/log/cron.log #daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log #user.* -/var/log/user.log
去掉前面的#。ok,接下來 使用命令cron restart重啟,啊喲,報錯了,
cron: can’t lock /var/run/crond.pid, otherpid may be
解決方案:
rm /var/run/crond.pid
ps -A | grep cron
kill 進程ID
然后繼續 cron restart,Ok了,但是還沒還結果,現在我們可以看看日志啦。
tail /var/log/cron.log
發現錯誤如下:
(CRON) info (No MTA installed, discarding output)
出錯原因:
報錯的主要原因是沒有配置郵件服務器.
有兩個原因會導致這個錯誤發生:
1,當你執行命令是shell腳本時
解決方案:在每條命令后面加上:
>/dev/null 2>&1
2,當你向窗口輸出時,因為內容的輸出是cron通過郵件發送的
解決方案:將輸出內容導入一個文件 >> /tmp/test.txt
更過的進階技術可以關注公眾號:進階的腳步 回復:學習資料 有驚喜哦