1. 程式人生 > >find結合重定向符清理文件

find結合重定向符清理文件

find 重定向 清空文件

大家知道,清理日誌文件時,如果該文件正在被某進程使用,則系統不會刪除,只會標註為deleted(使用lsof|grep deleted可以查看哪些文件被標註為這個狀態),所以這部分的磁盤空間不會釋放,那麽如何在不重啟進程的情況下,讓空間釋放呢?使用重定向符清空文件即可.

假設日誌文件為/var/log/tomcat/info.log,則使用命令:

 > /var/log/tomcat/info.log

當該目錄下有多個文件時,可以結合find查找文件,但是使用下面的命令無效(引起Shell的歧義,會在當前目錄生成一個文件名為{}的文件):

find /var/log/tomcat/ -type f -name ‘*.log‘ -exce > {} \;   #無效命令

那麽可以復雜一點,寫個腳本:

for file in `find /var/log/tomcat/ -type f -name ‘*.log‘`;do
  > $file
done

其實最簡單的方法是:

find /var/log/tomcat/ -type f -name ‘*.log‘ -exce sh -c ‘> {}‘ \;


本文出自 “每天進步一點” 博客,請務必保留此出處http://kusorz.blog.51cto.com/59379/1965688

find結合重定向符清理文件