大家知道,清理日志文件时,如果该文件正在被某进程使用,则系统不会删除,只会标注为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 ‘> {}‘ \;
时间: 2024-11-03 22:21:01