定時任務crontab在書寫時的四大坑

crontab是linux運維必須掌握的技能,雖然crontab好學,但是在實際書寫過程中也會遇到各種坑:

第一坑:比如寫一個命令每天晚上12點執行,可能新手在書寫時會出現兩種錯誤情況:

1、* 00 * * * CMD

這個錯誤的原因是沒有指定分鐘位的具體時間,會導致每分鐘都執行。

2、00 12 * * * CMD

這個錯誤的原因是不瞭解定時任務在書寫小時是按照24小時制來寫的,晚上12點應爲00,如果寫12是中午12點的意思。

第二坑:比如在寫定時備份文件的任務時,爲了避免文件名重複,往往會用到date +%F,但是由於我們忽略了%在定時任務crontab的配置文件是有特殊用法的,表示換行,所以往往我們寫的定時任務並沒有被真正執行,解決這個問題的辦法是將%F前面的%百分號用\轉義符去掉在crontab配置文件中的特殊意義。

第三坑:在寫命令時,沒有用命令的絕對路徑,會導致定時任務找不到該命令,因爲crontab默認只能找到/usr/bin和/bin下的命令,其他路徑的命令不能直接找到,需要加絕對路徑才能真正被使用。

第四坑:在定時任務書寫時,沒有將定時任務的輸出結果定向到一個文件或空/dev/null會導致兩種情況的發生:1、系統郵件服務開啓了,會導致postfix(C6)不斷給root發送郵件,給管理員造成困擾;2、如果郵件服務沒有開啓,會不斷增加郵件隊列在/var/spool/postfix/maildrop/目錄下創建小於4k的小文件,大量佔用inode,最終將磁盤的inode用光導致雖然block沒滿,但是inode滿了而存儲不了真正需要的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章