在 CentOS 中,如果你用 nohup 启动程序(比如 nohup xxx > nohup.out 2>&1 &),日志通常会写入 nohup.out。清空日志但不中断程序有几种常见做法:
> nohup.out
或
: > nohup.out
或
truncate -s 0 nohup.out
✅ 程序仍在运行,继续往文件写日志
✅ 文件 inode 不变,最安全
cat /dev/nullcat /dev/null > nohup.out
效果同方法一,只是写法不同。
rm nohup.out
⚠️ 如果你直接 rm,进程仍然持有文件句柄,磁盘空间不会释放,新日志也不会再生成(除非程序重新打开文件)。
如果是 systemctl 启动的服务:
sudo journalctl --vacuum-size=100M
# 或
sudo truncate -s 0 /var/log/xxx.log
用 logrotate 或改成按时间/大小切分日志:
nohup xxx >> app.log 2>&1 &
再配合 logrotate。
如果你愿意,可以告诉我:
我可以给你更合适的方案。