我設定了兩條計劃任務,都是定時重啟服務,如下:
[root@iZ94r80gdghZ tanteng]# crontab -l# 系統計劃任務* */1 * * * service mariadb restart >> /home/tanteng/crontab.log* * */1 * * service php70-php-fpm restart >> /home/tanteng/crontab.log
我是直接把命令語句放在定時任務的後面可以嗎,這些命令在本機是可以啟動並執行,同時把輸出記錄到log日誌,可是log日誌沒有任何內容,也不知道這個計劃任務生效沒有,這樣寫對不對?
回複內容:
我設定了兩條計劃任務,都是定時重啟服務,如下:
[root@iZ94r80gdghZ tanteng]# crontab -l# 系統計劃任務* */1 * * * service mariadb restart >> /home/tanteng/crontab.log* * */1 * * service php70-php-fpm restart >> /home/tanteng/crontab.log
我是直接把命令語句放在定時任務的後面可以嗎,這些命令在本機是可以啟動並執行,同時把輸出記錄到log日誌,可是log日誌沒有任何內容,也不知道這個計劃任務生效沒有,這樣寫對不對?
兩個地方你需要注意的
1 service命令是否在crontab中可以訪問
2 通過restart的方式,應用產生的日誌真的可以記錄到指定的檔案嗎
第1個問題可以查看/var/log/messages
和/var/spool/mails/username
日誌判斷
第2個問題很好解決,直接命令列service mariadb restart > ~/mariadb.log
,然後串連資料庫,做查詢(產生日誌),然後查看這個檔案,但其實我猜應該是沒有的。
LS說的基本上很全面了
crontab中,通用或者你不確定的時候,命令直接封裝成一個可執行檔,然後直接crontab 可執行檔就可以了
service命令操作的話,一般mariadb之類的回去找設定檔的,所以實際db的log輸出會在設定檔指定的位置
service xxx restart >> xxx.log ,這個裡面xxx.log只是輸出是否啟動成功之類的很短的資訊
查看crontab日誌,看它是否已經執行
星/1 這種寫法 多此一舉,寫星
1、通過查看 crontab 日誌,看這個兩條命令是否執行,(執行不一定成功)
2、簡單判斷,通過進程的 pid 判斷,是否執行成功,都是 restart 命令,平滑重啟之後,pid 是會改變的
1L基本上都說到了。
我也說幾點:
1.直接先測試命令,看是否能使用,例如你上面的:service mariadb restart >> /home/tanteng/crontab.log2.把命令調到 * * * * * 每分鐘先做一個測試,可以的話,再修改命令。
在crontab中使用全路徑執行命令
* */1 * * * /user/lib/user/bin/service mariadb restart >> /home/tanteng/crontab.log* * */1 * * /user/lib/user/bin/service php70-php-fpm restart >> /home/tanteng/crontab.log