nohup 本身只是“忽略挂断信号运行命令”,日志变大是程序持续输出到 nohup.out 导致的。常见解决思路如下:
nohup your_command > app.log 2>&1 &
或只保留错误:
nohup your_command > /dev/null 2> error.log &
nohup your_command > /dev/null 2>&1 &
> nohup.out
# 或
truncate -s 0 nohup.out
⚠️ 不要直接 rm nohup.out,否则进程可能继续写已删除文件,磁盘不释放。
示例 /etc/logrotate.d/myapp:
/path/to/nohup.out {
size 100M
rotate 5
copytruncate
compress
}
copytruncate 很关键:不重启进程就能截断日志。
0 0 * * * truncate -s 0 /path/to/nohup.out
journalctl| 场景 | 建议 |
|---|---|
| 临时跑脚本 | > /dev/null 2>&1 |
| 长期服务 | 日志框架 + logrotate |
| 已爆盘 | truncate -s 0 紧急处理 |
如果你愿意,可以告诉我:
我可以给你更具体的配置示例。