linux中crontab定時任務,導緻磁盤滿和雲監控未報警的問題的坑。
1.磁盤滿
使用指令
df -h
2.問題排查
2.1排查日志 指令
cat /var/log/messages
日志檔案的預設路徑是:/var/log
下面是幾個重要的日志檔案的路徑及其包含的資訊:
/var/log/syslog:它和/etc/log/messages日志檔案不同,它隻記錄警告資訊,常常是系統出問題的資訊。
/var/log/messages:包括整體系統資訊,其中也包含系統啟動期間的日志。此外,還包括mail,cron,daemon,kern和auth等内容。
/var/log/cron 用來記錄任務計劃的運作日志,如下,分别表示:
任務運作的日期與時間 、在哪台主機上運作 、運作任務的程式[程序号] 、任務運作的具體資訊
/var/log/user.log:記錄所有等級使用者資訊的日志。
/var/log/auth.log:包含系統授權資訊,包括使用者登入和使用的權限機制等。
/var/log/daemon.log:包含各種系統背景守護程序日志資訊。
/var/log/kern.log:包含核心産生的日志,有助于在定制核心時解決問題。
一直有提示錯誤提示:No configuration file found at /root/.esmtprc or /etc/esmtprc
2.2 進入根目錄檢視目錄大小
cd /
du -sh *
使用這個指令,可以檢視隐藏的 ls -la
2.3結果
cron中執行的程式有輸出内容,輸出内容會以郵件形式發給cron的使用者,而sendmail沒有啟動是以就産生了root/.esmtp_queue/ 目錄下的那些檔案,日積月累可能撐破磁盤。
3.解決方法
3.1 删除不用的檔案
可以參考已這個文檔:Linux伺服器清理磁盤
3.2 永久解決
設定MAILTO參數為空
方法一:
vim /etc/crontab
将 MAILTO=root 替換成 MAILTO=""
方法二:
crontab -e
第一行加上MAILTO=""(指定郵箱發送位置)
然後 重新開機 service crond restart
另外一個坑:開了磁盤報警功能,達到預警值了。結果沒有消息通知。
後面阿裡雲排查,說需要主機監控這裡要是運作中才行。