结合 logrotate 自动轮转日志
创建 logrotate 配置文件
cat > /etc/logrotate.d/myapp << 'EOF'
/path/to/your/nohup.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
dateext
maxsize 100M
}
EOF
或
创建 /etc/logrotate.d/myapp
复制粘贴可能带有不可见符号logrotate -d测试会有提示
"/path/to/your/nohup.out" {
daily
rotate 7
compress
missingok
notifempty
copytruncate
dateext
maxsize 100M
}
-
参数说明:
daily: 每天轮转一次。rotate 7: 最多保留 7 个旧日志文件。compress: 使用 gzip 压缩旧日志。missingok: 如果日志文件不存在,不报错。notifempty: 如果日志文件为空,不进行轮转。copytruncate: 关键! 先复制日志内容,然后清空原文件。这样nohup.out文件的 inode 不变,Java 进程会继续写入,不会中断。dateext: 用日期作为旧日志的后缀(如nohup.out-20251030)。maxsize 100M: 单个日志文件超过 100MB 就触发轮转。
-
测试配置
bash编辑
sudo logrotate -d /etc/logrotate.d/myapp # 模拟运行,检查配置是否正确 sudo logrotate -f /etc/logrotate.d/myapp # 强制立即执行一次轮转 -
自动执行
logrotate通常由cron每天自动执行,无需额外设置。
运行logrotate的方法:
-
可以运行整个logrotate(包括所有配置):
logrotate /etc/logrotate.conf -
也可以只运行我们刚刚创建的配置:
logrotate /etc/logrotate.d/myapp
4415

被折叠的 条评论
为什么被折叠?



