Linux下刪除大量文件的方法,Argument list too long報錯解決辦法


Linux下刪除大量文件的方法,Argument list too long報錯解決辦法

Linux用rm -rf * 刪除php ci的sess_save_path文件夾下的文件時報錯
-bash: /bin/rm: Argument list too long

刪除文件中包含的小文件數量過多,通常是由於受到 shell 參數個數限制所致。
這個是Linux系統存在的限制,可以通過如下指令查看該參數值的配置:
getconf ARG_MAX

解決辦法:
可以通過如下方式嘗試刪除(都需要先cd到對應目錄下執行)
1.使用 awk 刪除:
ls -l| awk '{ print "rm -f ",$9}'|sh

2.通過 ls 來配合 xargs 刪除 test 目錄下的所有文件:
ls |xargs rm -r

3.通過 find 來完成,更加安全智能,支持的參數更多。
find /usr/local/tests/ -name "*.jpg" |xargs rm -r
find . -name "ci_session*" | xargs rm -rf "ci_session*"

用WinSCP上傳文件時報錯:
一般錯誤(服務器應該提供錯誤描述)。
錯誤碼:4
服務器返回的錯誤消息:Failure
錯誤碼4的常見原因:
- 將文件重命名為一個已經存在的文件。
- 創建一個已經存在的目錄。
- 將遠程文件移動到一個不同的文件系統(HDD)上。
- 將文件上傳到一個滿的文件系統(HDD)上。
- 達到了用戶磁盤限額。

=================
實戰詳細過程:
#df -lh
查看空間只使用了78%,還有足夠的系統空間可以利用

# du -hs /home/wwwroot/
9.5G    /home/wwwroot/
這個放php代碼的目錄竟然有9.5G了,可能有大量session文件沒有清理掉導致的


刪掉/home/wwwlogs/日志文件了還是登陸不了,
session文件估計有很多,ls 命令很久了都還沒有返回結果
估計要把這session文件也刪掉才行
跟時間沒關系的,主要是php的每次他會生成一個文件,然后不會自動刪掉,要弄個腳本定時刪掉才行了
應該是放session那個文件夾下的文件數量超過了65536個 最大的限制了

其他的 都可以用rm -rf * 刪除的,有可能是這個網站的給攻擊了短時間內產生大量的無用session

從ci_session9刪到ci_session0還沒有刪完,還有字母a-z開頭的,這么多必須得寫個腳本刪除才行了
文件多了導致分分的都登錄不了,刪了一部分后才能登錄
session文件太多了,沒有自動刪除的

----------
# du -hs /home/wwwroot/zdztest/
569M    /home/wwwroot/zdztest/
# cd /home/wwwroot/zdztest/public/sess_save_path
# find . -name "ci_session*" | xargs rm -rf "ci_session*"
# du -hs /home/wwwroot/zdztest/
153M    /home/wwwroot/zdztest/
----------
# pwd
/home/wwwroot/zdztest/public
# ls -lh
total 142M
drwxr-xr-x 2 www www 142M May  9 18:33 sess_save_path
#sess_save_path這個文件夾上次異常了導致占空間比較大,需要刪掉才能釋放空間
# rm -rf *
# ls -lh
total 4.0K

# du -hs /home/wwwroot/
120M    /home/wwwroot/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM