在 Linux 下,nohup 通常配合 > logfile 2>&1 & 或默认生成 nohup.out 来记录日志。清空 nohup 日志的常见方法如下:
>> nohup.out
truncatetruncate -s 0 nohup.out
cat /dev/nullcat /dev/null > nohup.out
✅ 以上方法不会中断正在运行的进程,只是清空文件内容。
例如启动命令是:
nohup python app.py > app.log 2>&1 &
清空日志:
> app.log
# 或
truncate -s 0 app.log
logrotate(推荐生产环境)示例 /etc/logrotate.d/myapp:
/path/to/nohup.out {
size 100M
rotate 5
copytruncate
missingok
notifempty
}
copytruncate 可以在不清退进程的情况下截断日志。
不要直接 rm nohup.out
如果进程还在写,文件删了但句柄还在,磁盘空间不会释放,日志也会“消失但仍在写”。
如果你已经 rm 了:
lsof | grep deleted
找到对应 PID,重启进程或清空原文件。
如果你愿意,可以告诉我:
我可以给你更合适的方案。