當前位置:
          首頁 > 服務器教程 > linux清除/var/spool/clientmqueue下海量小文件方法

          linux清除/var/spool/clientmqueue下海量小文件方法

          昨天發了一天文章,inode100%故障導致無法上傳文件,今天空間又滿了,不得不再次仔細核查這個問題,終于找到了罪魁禍首,那就是/var/spool/clientmqueue這個目錄下存有海量的日志內容,估算這個目錄下有千萬級別的小文件,難怪會導致inode用完這個奇葩問題。

          ps:不要嘗試在wdcp或者寶塔面板中打開這個文件夾,那一定會卡死。

          經過查閱資料,發現linux下的cron定時任務在沒有重定向的情況下,就會將每次的執行結果發到/var/spool/clientmqueue這個文件夾下,我的論壇使用rsync做遠程附件自動同步,為了達到近乎實時同步的效果,5秒鐘執行一次同步,這樣原因就很明顯了,也就是5秒鐘就會在clientmqueue在文件夾下生成一個文件,每天會生成17280個文件,一個月就會生成518400個文件……我這個用了一年了,大概生成了6303200個文件,多么恐怖的一個數字,這些文件都很小,不到1kb,但是都需要占用索引,這也就解釋了為什么空間還有27G但是inode用滿了。

          同時很奇怪的是,昨天在統計文件個數的時候,竟然沒統計出來這個文件夾,今天重新做了一次仔細看了下,數字是0,估計腳本直接掛了。

          用其它統計大小和文件個數的命令,都是內存不夠導致直接被kill了……

          如何清除linux系統清除/var/spool/clientmqueue下大量日志教程

          找到了問題,就要著手解決了,刪除這么多的文件夾,還真成為一個大問題,

          常用的rm -rf *時候會提示:

          “-bash: /bin/rm: Argument list too long“..

          需要使用ls | xargs rm -f命令刪除,如下,先cd切換到clientmqueue下,然后執行命令

          # cd ar/spool/clientmqueue
          # ls | xargs rm -f

          執行這個命令的時候,又遇到了問題,那就是我的這個附件服務器用的是1U1G5M的,小內存大帶寬,然后執行命令的時候一直提示內存不夠……關了網站依然不夠用,最后沒辦法,升級到1U2G后解決。

          此命令大概執行了一個小時才全部清空clientmqueue,清空后inode從100%降低到5%,真是世界徹底清凈了。

          linux清除/var/spool/clientmqueue下海量小文件方法

          如何避免clientmqueue產生大量文件

          直接拋棄命令執行的結果,每條計劃任務命令后加> /dev/null 2>&1即可。

          具體我的命令是:

          * * * * * /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 5; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 10; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 15; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 20; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 25; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 30; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 35; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 40; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 45; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 50; /root/rs.sh >/dev/null 2>&1
          * * * * * sleep 55; /root/rs.sh >/dev/null 2>&1

          具體根據你自己的任務計劃修改。

          修改前后測試,加了> /dev/null 2>&1后clientmqueue不會產生新的文件,終于徹底解決了這個問題。

          亚洲无码激情视