LinMinquan's Blog

Experience technology to change life

Use Logrotate to Handle Big Nohup Log File

用 nohup 的方式来运行 Java 程序的话,运行一段时间后,会占用很大的硬盘空间,导致系统挂掉。

用 Linux 原生的 logrotate 工具来处理。假设项目所在的目录是 /opt/abc/ 切到 root 用户,在 /etc/logrotate.d/ 目录里新建个文件,叫 abc,文件内容如下

su root root
/opt/abc/nohup.log {
        daily
        size 100M
        rotate 5
        compress
        missingok
        notifempty
        copytruncate
}

第一行的 su root root 是因为项目里的 nohup.log 是需要 root 用户权限和 root group 的。

copytruncate 是先复制一份 nohup.log 文件,原先的文件里的内容变没了,Java 程序还是继续往这个文件里写。还有一种方式是 create,它会把原文件重命名,新建一个新的叫 nohup.log 的文件,缺点是 Java 程序不会往这个文件里写了。

如果 nohup.log 文件已经过大了,想立即运行一下,可以敲如下命令,它会先去复制一份,然后压缩。

logrotate /etc/logrotate.d/abc

参考资料:

Linux日志切割神器logrotate原理介绍和配置详解

Centos/Linux setting logrotate to maximum file size for all logs

logrotate command in Linux with examples


Share