/var/spool/clientmqueue 爆滿問題

/var/spool/clientmqueue 爆滿問題

當你使用簡單的sendmail發郵件的時候,或者系統默認要發一些郵件(比如cron發的郵件)的時候,首先會把郵件拷貝到這個目錄裏,然後等待MTA(mail transfer agent) 來處理,MTA做的事情通常是把這個目錄中的郵件弄到/var/spool/mqueue裏,然後再發送到真正的目的地。出現/var/spool/clientmqueue/非常大的情況通常因爲沒有合適的MTA發送郵件,就都積累在這裏了,假如這裏的郵件並不是你需要的,比如是系統默認發的每分鐘跑一次的什麼什麼cron的信,你可以簡單的刪掉他們。當然,文件多了一些,直接rm -f *,系統可能會說argument too long什麼的,沒有關係,find /var/spool/clientmqueue/ -type f –delete或者find /var/spool/clientmqueue/ -type f -exec rm {} \+可能對你有幫助,當然這兩條命令要求find的版本比較新。如果不幸你的版本比較低,可以嘗試find /var/spool/clientmqueue/ -type f -exec rm {} \;

原因分析:系統中有用戶開啓了cron,而cron中執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啓動所以就產生了這些文件;
解決辦法:1、 將crontab裏面的命令後面加上> /dev/null 2>&1

2、知識點:

2>:重定向錯誤。
2>&1:把錯誤重定向到輸出要送到的地方。即把上述命令的執行結果重定向到/dev/null,即拋棄,同時,把產生的錯誤也拋棄。

使用du -sh * 或 du -sh /* 查看目錄的大小,查找佔用空間大的目錄

注:/是系統目錄,可以cd到當前目錄下執行du -sh *

3、具體代碼:

(1)、# crontab -u cvsroot -l
01 01 * * * /opt/bak/backup
01 02 * * * /opt/bak/backup2
(2)、# vi /opt/bak/backup

#!/bin/sh

cd /
getfacl -R repository > /opt/bak/backup.acl
(3)、# vi /opt/bak/backup2

#!/bin/sh

week=`date +%w`
tar zcvfp /opt/bak/cvs$week/cvs.tar.gz /repository >/dev/null 2>&1

4、清除/var/spool/clientmqueue/目錄下的文件:

# cd /var/spool/clientmqueue

# rm -rf *

如果文件太多,佔用空間太大,用上面命令刪除慢的話,就執行下面的命令:

# cd /var/spool/clientmqueue

# ls | xargs rm -f


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