在 CentOS(以及其他 Linux 发行版)里,nohup 本身不会“占内存”,它只是一个让进程忽略 SIGHUP、在退出终端后继续运行的工具。你说的“nohup 日志占内存”,通常是指下面几种情况之一:
最常见误解:
nohup java -jar app.jar > nohup.out &
nohup.out 是磁盘文件✅ 查看磁盘:
du -sh nohup.out
df -h
✅ 查看内存:
free -h
top
有些程序(尤其是 Java / Python):
表现:
✅ 解决:
-Djava.io.tmpdir、日志框架 immediateFlushpython -u常见场景:
rm nohup.out # 文件删了,但空间没释放
原因:
✅ 查看:
lsof | grep deleted
✅ 解决:
> nohup.out 清空Linux 会把文件读写缓存到内存:
buff/cache 很高
这是 正常行为,不是泄漏:
✅ 查看:
free -h
✅ 不要直接写 nohup.out
✅ 使用日志切割:
nohup app >> /var/log/app.log 2>&1 &
配合:
logrotate
或:
nohup app | rotatelogs /var/log/app.%Y%m%d.log 86400 &
nohup 日志不会直接占内存,占的是磁盘;如果你看到“内存高”,通常是程序缓存日志或 page cache,而不是 nohup 本身。
如果你愿意,可以贴出:
free -hdu -sh nohup.outps / top 内存情况我可以帮你精确判断是哪一种。