linux教程:管理/var/spool/clientmqueue/下的大檔案

season0891發表於2010-03-30
linux教程:管理/var/spool/clientmqueue/下的大檔案

 原因:

  在baidu上查詢得知產生這些海量檔案的原因是:系統中有使用者開啟了cron,而cron中執行的程式有輸出內容,輸出內容會以郵件形式發給 cron的使用者,而sendmail沒有啟動所以就產生了這些檔案;所以這些檔案不是什麼重要的檔案,刪!

  於是cd /var/spool/clientmqueue

  rm * (rm -f *) 都不行,顯示引數列表過長(-bash: /bin/rm: Argument list too long)無法用rm直接刪除,怎麼辦?

  解決辦法:

  將crontab裡面的命令後面加上 > /dev/null 2>&1. 如:ls -l / > /dev/null 2>&1

  補充,這些檔案太多的時候用rm刪除很慢,可以以root身份進入/var/spool/clientmqueue/,執行: ls|xargs rm -f 就能全部刪除了

  使用xargs

  # cd /var/spool/clientmqueue

  # ls | xargs rm -f

  回車後,過了兩三分鐘,終於執行完了,clientmqueue下空空如也,磁碟可用空間一下子增加了不少。

  附xargs介紹:

  Linux Shell真的是一個比較好玩的東西,以前也會經常寫一些,不過都是些簡單的東西,或者稱之為批處理,估計也只能叫批處理,只是一些簡單的命令的堆 積。:)。

  今天稍微看了一下xargs,一個簡單的示例應用如下:

  [root@TestServer haha]#ls

  a.class b.class c.class

  a.java b.java c.java

  [root@TestServer haha]#ls |xargs rm

  [root@TestServer haha]#ls

  [root@TestServer haha]#

  雖然有點避簡就煩,但是能說明了xargs的功能:它將輸入輸出給xargs後面的命令,作為那個命令的引數。

  也就是說,上面的命令執行相當於:

  rm a.class b.class c.class a.java b.java c.java

  xargs將前面的ls的結果交給了xargs後面的rm命令,作為rm命令的引數。它真正的含義可以用xargs自己來解釋:

  [root@TestServer haha]# cat a

  first line

  second line

  [root@TestServer haha]# cat a |xargs

  first line second line

  [root@TestServer haha]# cat a |xargs ——verbose

  /bin/echo first line second line

  first line second line third line

  [root@TestServer haha]# cat a |xargs ——verbose ——max-args=1

  /bin/echo first

  first

  /bin/echo line

  line

  /bin/echo second

  second

  /bin/echo line

  line

  還有人這樣解釋xargs:

  xargs的作用是用來回避對命令列長度的限制,它透過使用一個引數多次呼叫一個命令實現這一功能,而不是一次使用多個引數。這句話的意思 是:xargs永遠一次只傳給他後面的命令一個引數,然後不停的將所有引數一一傳完,然而,這個說法是錯誤的!下面的試驗將證明這個說法是不正確的:

  [root@TestServer haha]# ll

  total 12

  -rw-r——r—— 1 root root 34 Aug 19 20:43 a

  -rw-r——r—— 1 root root 34 Aug 19 20:45 b

  drwxr-xr-x 2 root root 4096 Aug 19 20:54 c_folder

  [root@TestServer haha]# ll c_folder/

  total 0

  [root@TestServer haha]# ls| xargs cp

  [root@TestServer haha]# ll

  total 12

  -rw-r——r—— 1 root root 34 Aug 19 20:43 a

  -rw-r——r—— 1 root root 34 Aug 19 20:45 b

  drwxr-xr-x 2 root root 4096 Aug 19 20:54 c_folder

  [root@TestServer haha]# ll c_folder/

  total 8

  -rw-r——r—— 1 root root 34 Aug 19 20:54 a

  -rw-r——r—— 1 root root 34 Aug 19 20:54 b

  [root@TestServer haha]#

  從這個試驗可以看到,xargs確實是將a b c_folder三個引數同時傳給了cp命令,不然不可能出現這樣的結果。

  附rm命令:

  名稱:rm

  使用許可權:所有使用者

  使用方式:rm [options] name……

  說明:刪除檔案及目錄。

  引數:?

  -i 刪除前逐一詢問確認。

  -f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。

  -r 將目錄及以下之檔案亦逐一刪除。

  範例:

  刪除所有C語言程式檔;刪除前逐一詢問確認 :

  rm -i *.c

  將 Finished 子目錄及子目錄中所有檔案刪除 :

  rm -r Finished


come from:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-630820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章