在 CentOS 里用 nohup 启动程序时,日志通常会写到 nohup.out 或你重定向的文件(如 xxx.log)。清理日志的核心原则是:不要直接删文件(可能导致程序继续写已删除的 inode,磁盘不释放),而是清空内容或做日志轮转。
下面按常见场景说明:
> nohup.out
或
: > nohup.out
✅ 不清空文件 inode,程序还能继续写
truncate -s 0 nohup.out
cat /dev/null > nohup.out
比如:
nohup java -jar app.jar > app.log 2>&1 &
清理方式一样:
> app.log
truncate -s 0 app.log
❌ 直接删除:
rm nohup.out
如果程序还在运行:
示例 /etc/logrotate.d/myapp:
/opt/app/nohup.out {
size 100M
rotate 5
copytruncate
missingok
notifempty
}
说明:
copytruncate:拷贝后清空原文件(适合 nohup)nohup ./app.sh > /var/log/app.log 2>&1 &
du -sh nohup.out
lsof | grep deleted
如果你愿意,可以告诉我:
我可以给你更精确的方案。