crontab導致磁碟空間滿問題的解決

2022-08-21 02:21:11 字數 1141 閱讀 5631

收到磁碟空間滿的資訊。發現主機上/var空間不足。du -sh 一層層的查下去看的時候,最終找到了/var/spool/clientmqueue這個目錄。裡面檔案有48w個,娘阿。這個問題的原因是crontab的一些計畫任務中產生了大量日誌資訊。這些日誌資訊沒有匯入到/dev/null或者指定的檔案。結果就產生了目錄下的這些檔案。本來這些檔案要作為mail發出去的。結果sendmail沒有啟動,積留在這裡了。建議crontab的計畫任務全部寫成這個樣子:

30 7 * * * /home/mysql/admin/bin/sec.startup restart >/dev/null 2>&1

請注意後面的》/dev/null 2>&1。這裡2>&1表示標準錯誤也放到標準輸出,而標準輸出匯入到了/dev/null;也就是說,日誌資訊我不要了。如果你要的話,匯入到你指定的檔案咯。

這裡還有乙個注意的地方就是》/dev/null 2>&1的順序。他們的順序也不能反。否則標準錯誤不能匯入到標準輸出。還是要寫到/var/spool/clientmqueue檔案中。

我們可以看看spool和clientmqueue的linux幫助:

man hier

spool/ miscellaneous printer and mail system spooling

directories

clientmqueue/

undelivered submission mail queue; see

sendmail(8)

原理搞清楚了,以後的問題也避免了。那麼就是已有的檔案刪除問題了。注意,不要這樣刪除rm -rf /var/spool/clientmqueue,這個資料夾還是蠻重要的,聽說過刪除該資料夾系統出問題的事例了,希望你不是下乙個造成同樣的故障的人。

刪除檔案本來很簡單,但是刪除48w個檔案就是乙個有技術含量的活了。直接rm *會報錯說argument list too long。rm接收的引數列太多了。我們就不追究這麼通用的工具怎麼會出這麼令人不爽報錯了吧。簡單的解決辦法:

a、利用xargs。xargs其實就是把傳給它的列表乙個乙個的傳給它的命令去乙個乙個的執行。具體的命令為ls |xargs rm -f。

b、利用find -delete。具體命令為find /var/spool/clientmqueue/ -type f -delete

磁碟空間滿的問題

kinux os pc 出現磁碟空間不足問題有 導致該問題的可能原因包括 執行df h檢視磁碟使用 以及使用du sh 檢視 分析根目錄下每個目錄下面有多少個檔案。fori in doecho i find i wc l done df i 檢視實際inode 命令 命令重新建立檔案系統,指定ino...

解決linux根目錄磁碟空間滿

根目錄磁碟寫滿,往往都是.log日誌造成的,首先想到的是查詢大的日誌檔案 1 find查詢根下大於800m的檔案 find size 800m exec ls lh 找到大的日誌檔案關閉掉,或者更改到其他磁碟。2 如果查詢後,發現沒有大檔案,可能有占用檔案的相關程序沒有關閉 可以通過下面命令 如果沒...

Linux磁碟空間檢視及空間滿的處理

如果要檢視磁碟還剩多少空間,當然是用df的命令了。root localhost df h 檔案系統 容量 已用 可用 已用 掛載點 dev sda2 14g 11g 2.6g 82 dev sda1 99m 14m 81m 14 boot tmpfs 442m 275m 168m 63 dev sh...