在 Debian(或其他 Linux)里,nohup 本身只是“忽略挂断信号”,真正的日志是你自己重定向出来的,比如:
nohup python app.py > app.log 2>&1 &
所以“清理 nohup 日志”本质就是清理这些重定向的日志文件。
truncatetruncate -s 0 app.log
>> app.log
cat /dev/nullcat /dev/null > app.log
✅ 优点:
rm -f app.log
⚠️ 问题:
nohup 进程仍持有文件句柄✅ 只适合:程序已停止
> app.log
# 找到进程
ps -ef | grep app.py
# 杀掉
kill -9 PID
# 重新启动
nohup python app.py > app.log 2>&1 &
logrotate(最推荐)示例 /etc/logrotate.d/app:
/var/log/app.log {
size 50M
rotate 5
compress
missingok
notifempty
copytruncate
}
✅ copytruncate 对 nohup 进程非常友好
0 3 * * * truncate -s 0 /home/user/app.log
❌ 直接 rm 后空间没释放
✅ 用 lsof | grep deleted 查看
❌ 用 vim 改 nohup.out
✅ 用 > nohup.out
nohup.out> nohup.out
如果你愿意,可以告诉我:
我可以给你最合适的清理方案。