• <tbody id="w3vxa"></tbody>

    <dd id="w3vxa"></dd>
      1. <rp id="w3vxa"></rp><rp id="w3vxa"></rp>
        當前位置:
        首頁 > 服務器教程 > 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不會產生新的文件,終于徹底解決了這個問題。