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
参考资料:
Centos/Linux setting logrotate to maximum file size for all logs
logrotate command in Linux with examples