最近一個項目,須要用到一個定時任務,先說crontab的經常使用命令。php
crontab -u //設定某個用戶的cron服務,通常root用戶在執行這個命令的時候須要此參數 crontab -l //列出某個用戶cron服務的詳細內容 crontab -r //刪除沒個用戶的cron服務 crontab -e //編輯某個用戶的cron服務
接下來個人調試過程shell
(1)編輯加入本身的命令vim
crontab -e //編輯某個用戶的cron服務
*/1 * * * * /usr/bin/php /var/send.php 每分鐘都執行一次服務器
send.php學習
編輯以下this
<?php echo 'this is a work'; ?>
沒有出現運行結果,因而乎,就去查看日誌,結果在/var/log下沒有發現 cron.log文件,這我就納悶了,why?spa
通過研究發現原來日誌服務器rsyslog沒有開啓對crontab的支持,接下來進入/etc/rsyslog.d/ 調試
cd /etc/rsyslog.d/ ls 20-ufw.conf 50-default.conf //會有連個文件
vim 50-default.conf
編輯以下:
找到 cron.* 所在行rest
# 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
更過的進階技術能夠關注公衆號:進階的腳步 回覆:學習資料 有驚喜哦