重要避坑 不要直接rm -f app.log删除进程正在写入的日志文件! rm 只是删除文件名,进程依旧持有文件句柄继续写,磁盘空间不会释放,需要重启 / 关闭对应进程才释放空间。 出现大量deleted文件
重要避坑不要直接 rm -f app.log 删除进程正在写入的日志文件! rm 只是删除文件名,进程依旧持有文件句柄继续写,磁盘空间不会释放,需要重启 / 关闭对应进程才释放空间。 出现大量 deleted 文件用 lsof | grep deleted 查看。 日志清理常用命令1. 清空整个日志文件(保留文件本身,inode 不变,进程可继续写,推荐)
适用:日志太大,直接清空全部内容;正在写入的日志文件安全清空。 不要用 rm app.log 再 touch,会造成业务句柄异常。rm 会产生 deleted 幽灵文件,空间不释放。 2. 删除文件头部 N 行(删除前 100 行)
注意:复制间隙会丢失极少量日志;高吞吐不建议频繁手动删头部。 3. 保留末尾 N 行,截断日志(只保留最后 2000 行)把日志只保留最后 2000 行,前面全部丢弃
4. 查找旧日志文件,批量删除查找 7 天以前的 .log 文件删除(日志归档文件,已经不再被进程打开)
参数说明:
千万不要对正在被进程写入的活跃日志执行 find 删除!会产生 deleted 幽灵文件。 5. 压缩历史日志日志暂时不能删,先压缩节省磁盘
6. 处理已经 rm 但是没释放空间的幽灵文件
处理:找到对应业务进程,重启进程,磁盘空间立刻释放。 业务不可重启:进入该文件的 /proc/<pid>/fd/ 目录,找到对应 fd,执行 > fd编号 清空文件 只 rm 文件,不重启进程,磁盘空间不会释放。 |
2024-04-02
2024-02-26
2023-01-24
2024-09-30
2022-08-15