Nohup 启动程序未指定输出日志,导致磁盘空间被占满的解决方案
1. 问题原因
当使用 nohup 启动程序时,默认情况下,标准输出(stdout)和标准错误(stderr)都会被重定向到 nohup.out 文件。例如:
2. 解决方案
2.1. 指定日志文件并限制大小
可以在启动命令中手动指定日志文件,而不是使用 nohup.out:
-
>表示将标准输出(stdout)重定向到my_script.log -
2>&1表示将标准错误(stderr)重定向到标准输出
但即使这样,日志仍然可能变得过大,需要定期清理或使用日志轮转。
2.2. 使用 logrotate 管理日志
如果希望自动清理过大的日志文件,可以使用 logrotate 进行管理。例如,创建 /etc/logrotate.d/my_script 文件,内容如下:
-
daily:每天轮转日志 -
rotate 7:保留最近 7 个日志文件 -
size 100M:当日志文件达到 100MB 时进行轮转 -
compress:压缩旧日志 -
copytruncate:保留当前日志文件但清空内容
这样可以确保日志不会无限增长。
2.3. 禁用日志输出
如果不需要日志,可以将其重定向到 /dev/null,避免占用磁盘空间:
2.4. 监控磁盘空间
df -h

可以定期使用 du 或 df 命令监控日志大小,防止磁盘占满:
#查找大文件
sudo du -ah / | sort -rh | head -20
3. 结论
✅ 指定日志文件 避免 nohup.out 过大
✅ 使用 logrotate 管理日志大小,防止无限增长
✅ 重定向到 /dev/null 在不需要日志的情况下彻底禁用输出
✅ 定期检查磁盘空间,确保系统稳定运行
合理管理 nohup 日志输出,可以避免磁盘被占满的问题,提高服务器的稳定性!🚀
心有猛虎,细嗅蔷薇

浙公网安备 33010602011771号