广告位联系
返回顶部
分享到

linux日志清理命令大全,安全删除日志文件方法

linux 来源:互联网 作者:佚名 发布时间:2026-09-09 22:26:32 人浏览
摘要

重要避坑 不要直接rm -f app.log删除进程正在写入的日志文件! rm 只是删除文件名,进程依旧持有文件句柄继续写,磁盘空间不会释放,需要重启 / 关闭对应进程才释放空间。 出现大量deleted文件

重要避坑

不要直接 rm -f app.log 删除进程正在写入的日志文件!

rm 只是删除文件名,进程依旧持有文件句柄继续写,磁盘空间不会释放,需要重启 / 关闭对应进程才释放空间。

出现大量 deleted 文件用 lsof | grep deleted 查看。

日志清理常用命令

1. 清空整个日志文件(保留文件本身,inode 不变,进程可继续写,推荐)

1

2

3

4

# 方式1

> app.log

# 方式2

cat /dev/null > app.log

适用:日志太大,直接清空全部内容;正在写入的日志文件安全清空。

不要用 rm app.log 再 touch,会造成业务句柄异常。rm 会产生 deleted 幽灵文件,空间不释放。

2. 删除文件头部 N 行(删除前 100 行)

  • 文件没有程序写入(静态)

1

sed -i '1,100d' app.log

  • 文件正在被进程写入(动态日志)

1

2

3

sed -n '101,$p' app.log > app.log.tmp

cp app.log.tmp app.log

rm -f app.log.tmp

注意:复制间隙会丢失极少量日志;高吞吐不建议频繁手动删头部。

3. 保留末尾 N 行,截断日志(只保留最后 2000 行)

把日志只保留最后 2000 行,前面全部丢弃

1

2

3

tail -n 2000 app.log > app.log.tmp

cp app.log.tmp app.log

rm -f app.log.tmp

4. 查找旧日志文件,批量删除

查找 7 天以前的 .log 文件删除(日志归档文件,已经不再被进程打开)

1

2

# 查找 /var/log 下7天前日志文件删除

find /var/log -type f -name "*.log" -mtime +7 -delete

参数说明:

  • -mtime +7:修改时间大于 7 天
  • -type f:只找普通文件

千万不要对正在被进程写入的活跃日志执行 find 删除!会产生 deleted 幽灵文件。

5. 压缩历史日志

日志暂时不能删,先压缩节省磁盘

1

2

3

4

5

6

7

8

gzip old-app.log  # 效果:`old-app.log` → `old-app.log.gz`,原文件被删除

gzip -c old-app.log > old-app.log.gz #压缩保留原文件

gunzip old-app.log.gz    #解压,删除gz

gunzip -c old-app.log.gz > file #解压保留gz

zcat old-app.log.gz      #查看gz内容

zgrep "xxx" old-app.log.gz #搜索gz内关键字

tar -zcvf old-app.log.tar.gz dir/ #打包压缩目录

tar -zxvf old-app.log.tar.gz #解压目录包

6. 处理已经 rm 但是没释放空间的幽灵文件

1

2

# 查看已经删除,但进程还打开的文件

lsof | grep deleted

处理:找到对应业务进程,重启进程,磁盘空间立刻释放。

业务不可重启:进入该文件的 /proc/<pid>/fd/ 目录,找到对应 fd,执行 > fd编号 清空文件

只 rm 文件,不重启进程,磁盘空间不会释放。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计