,避免换行符引发轮转异常。" /> ,避免换行符引发轮转异常。">

Linux服务器如何清理大日志文件?不重启服务的清理方法【教程】

落晨小哥_5941

落晨小哥_5941

2026-04-15

671人浏览

原创

清空日志应优先用 > 或 truncate -s 0:> 快速轻量、保留元数据;truncate 对超大文件毫秒级完成且无 i/o;禁用 echo "" >,避免换行符引发轮转异常。

linux服务器如何清理大日志文件?不重启服务的清理方法【教程】

直接清空比删除更安全,只要日志文件仍被进程打开,就该用截断(truncate)或重定向,而不是 rm

> 重定向快速清空单个日志文件

这是最常用也最轻量的方式,Shell 的 > 操作符会把目标文件大小设为 0,同时保留 inode、权限、属主等元数据,正在写入的日志进程完全无感知。

  • 必须用 sudo 或 root 权限执行,否则可能因权限不足失败
  • 不适用于只读文件(如某些 journal 日志),会报 Permission denied
  • 对几百 MB 级别的文件极快;但遇到几十 GB 的 catalina.out*-json.log 时,底层仍是 write 系统调用,实际耗时略高

示例:sudo >/var/log/nginx/access.log

truncate -s 0 处理超大日志文件

当面对 >10GB 的日志(比如 Docker 容器的 *-json.log 或 Tomcat 的 catalina.out),truncate 是更优选择——它直接修改文件系统中的 size 字段,不触发 I/O 写入,毫秒级完成。

  • truncate 不依赖 shell 重定向逻辑,行为更确定
  • 支持保留部分日志,例如 truncate -s 1M logfile 只留最后 1MB(注意:不是“保留末尾 1MB”,而是截断到 1MB 大小)
  • 若目标文件被硬链接指向,truncate 只影响该路径,不影响其他链接;而 > 同样只作用于当前路径

示例:sudo truncate -s 0 /var/lib/docker/containers/*/f2a8646430bd*-json.log

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载

别用 echo "" > file 清空日志

这个命令看似简洁,但会在文件里写入一个换行符(\n),导致文件大小变成 1 字节。某些日志轮转工具(如 logrotate)或监控脚本会据此误判“日志非空”,后续轮转可能异常;更糟的是,Java 应用的 FileAppender 在追加模式下可能从这 1 字节处继续写,造成日志错位。

  • echo -n "" > file 能避免换行,但依然调用 write(),不如 >truncate 干净
  • cat /dev/null > file 效果等同于 >,适合写进脚本增强可读性,但多一次进程 fork 开销

真正该避开的是带内容的 echo 变体,尤其是没加 -n 的。

批量清理时注意路径和权限边界

find 批量操作前,先确认范围是否精准。例如 find / -name "*.log" 可能扫到 /proc 下的伪文件或 NFS 挂载点,导致卡顿或报错。

  • 优先限定根目录:find /var/log -type f -name "*.log"
  • 对 Docker 日志,固定路径更可靠:find /var/lib/docker/containers -name "*-json.log"
  • -print0 | xargs -0 替代 -exec,避免文件名含空格或特殊字符时报错
  • 生产环境建议加 --dry-run 类似逻辑(手动先 ls 验证),切勿直接跑 rm -rf

真正容易被忽略的是:清空后,原进程仍在往同一个 inode 写,文件描述符未关闭——所以 df 显示磁盘空间不会立刻释放,要等进程主动 lseek 到 EOF 或重启服务才能彻底回收。这时候看 lsof +L1 能发现“已删除但未释放”的句柄。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux服务器

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.26

605

5

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

264

5

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

449

5

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

265

5

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

328

5

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

329

5

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

541

5

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

302

5

有哪些常见的tomcat漏洞
有哪些常见的tomcat漏洞

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2013

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习