1. 问题原因

当使用 nohup 启动程序时,默认情况下,标准输出(stdout)和标准错误(stderr)都会被重定向到 nohup.out 文件。例如:

nohup python my_script.py &
这条命令会将所有程序的输出写入当前目录下的 nohup.out 文件。如果程序持续运行且不断输出日志,该文件会变得非常大,最终可能导致磁盘空间耗尽。

2. 解决方案

2.1. 指定日志文件并限制大小

可以在启动命令中手动指定日志文件,而不是使用 nohup.out

nohup python my_script.py > my_script.log 2>&1 &

  

  • > 表示将标准输出(stdout)重定向到 my_script.log

  • 2>&1 表示将标准错误(stderr)重定向到标准输出

但即使这样,日志仍然可能变得过大,需要定期清理或使用日志轮转。


2.2. 使用 logrotate 管理日志

如果希望自动清理过大的日志文件,可以使用 logrotate 进行管理。例如,创建 /etc/logrotate.d/my_script 文件,内容如下:

/var/log/my_script.log {
    daily
    rotate 7
    size 100M
    compress
    missingok
    notifempty
    copytruncate
}
  • daily:每天轮转日志

  • rotate 7:保留最近 7 个日志文件

  • size 100M:当日志文件达到 100MB 时进行轮转

  • compress:压缩旧日志

  • copytruncate:保留当前日志文件但清空内容

这样可以确保日志不会无限增长。


2.3. 禁用日志输出

如果不需要日志,可以将其重定向到 /dev/null,避免占用磁盘空间:

nohup python my_script.py > /dev/null 2>&1 &
这将丢弃所有日志输出,但可能不利于调试。

2.4. 监控磁盘空间

df -h

可以定期使用 dudf 命令监控日志大小,防止磁盘占满:

du -sh nohup.out df -h

#查找大文件

sudo du -ah / | sort -rh | head -20

  

3. 结论

指定日志文件 避免 nohup.out 过大

使用 logrotate 管理日志大小,防止无限增长

重定向到 /dev/null 在不需要日志的情况下彻底禁用输出

定期检查磁盘空间,确保系统稳定运行

合理管理 nohup 日志输出,可以避免磁盘被占满的问题,提高服务器的稳定性!

Nohup 启动程序未指定输出日志,导致磁盘空间被占满的解决方案的更多相关文章

  1. linux 磁盘空间被占满但找不到目标文件的问题处理 lsof命令

    lsof简介 在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. 直接输入lsof部分输出为: 每行 ...

  2. nohup启动 jar 不输出日志

    简单暴力:nohup java -jar xxx.jar >/dev/null 2>&1 &

  3. mr程序无法输出日志进行调试的解决方法

    mr程序无法输出日志进行调试的解决方法 @(Hadoop) yarn开启日志输出设置 在yarn-site.xml文件中添加如下配置: <property> <name>yar ...

  4. SQLServer数据库中开启CDC导致“事务日志空间被占满,原因为REPLICATION”的原因分析和解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6646143.html SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:在执行增删改语句(产 ...

  5. SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    SQLServer数据库中开启CDC导致事务日志空间被占满的原因 转载  2017-04-01   投稿:mrr    我要评论 这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间 ...

  6. Linux 误删catlina.out导致磁盘空间爆满,无法查询到大文件解决办法

    大概是前俩天吧,发现公司的网站不定时的出现接口调不通的情况,便让手下小弟去服务器上查看一下,小弟告我磁盘空间满了,于是我让他处理一下.结果没想到他直接把 catlina.out 给干掉了.后果可想而知 ...

  7. cf卡中,wtmp文件较大,导致磁盘空间满了

    看了一下,有一个wtmp 和wtmp.1的文件非常大.wtmp记录的是机器注销.启动的信息.由此可见,机器长时间的不断重启,造成该日志记录超级大,把cf的空间给占满了. wtmp日志可以用who和la ...

  8. 关于jenkins旧的构建导致磁盘空间不足问题

    简述: Jenkins在每一次的执行构建后,都会对该构建的项目生成一个历史构建记录以及生成一份历史构建的项目发布包,长期累积可能会占用大量磁盘空间 jenkins构建jobs路径如下图: 解决办法: ...

  9. IIS日志导致磁盘被占满

    某服务器只部署了个IIS,应用目录都在D盘,可C盘97.5GB空间却被占满了. 将系统文件,隐藏文件全部显示,再选中所有的C盘文件及文件夹查看容量只有19GB. 既然只部署了IIS,那自然就怀疑到了I ...

  10. Linux下Shell脚本运行程序不输出日志到终端

    使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...

随机推荐

  1. 咨询公司:趁着AI人工智能的浪潮还能持续,好好享受吧……

    在人工生成式智能热潮的喧嚣与狂热之中,咨询行业正经历一场基本未被察觉却极具变革性的革命,这场变革将塑造它的未来. 传统咨询依赖于由高素质专业人士组成的团队,他们专注于研究.数据分析,并提供定制化建议. ...

  2. manim边学边做--移动相机的场景类

    Manim作为强大的数学动画引擎,其核心功能之一是实现复杂的镜头运动控制. MovingCameraScene类正是为满足这种需求而设计的专业场景类. 与基础Scene类相比,它通过以下特性拓展了镜头 ...

  3. 依赖注入(DI)与控制反转(IoC)

    .wj_nav { display: inline-block; width: 100%; margin-bottom: 0.375rem } .wj_nav span { display: inli ...

  4. 关于oracle pfile和spfile文件说明

    •Pfile(Parameter File,参数文件):是基于文本格式的参数文件,含有数据库的配置参数. 默认的名称为"init+例程名.ora",这是一个文本文件,可以用任何文本 ...

  5. 【硬件】认识和选购多核CPU

    2.1 认识和选购多核CPU CPU在电脑系统中就像人的大脑一样,是整个电脑系统的指挥中心,电脑的所有工作都由CPU进行控制和计算.它的主要功能是负责执行系统指令,包括数据存储.逻辑运算.传输控制.输 ...

  6. 【错误解决】Android APK 方法数量限制

    错误:# Cannot fit requested classes in a single dex file (# methods: 74519 > 65536) 最近开发安卓程序遇到以下错误: ...

  7. This APT has Super Cow Powers.

    在Debian/Ubuntu上,apt包管理器内嵌着一个彩蛋. 如果你在命令行界面输入 apt help 在最后一行能找到This APT has Super Cow Powers. 说明该apt具有 ...

  8. 在 VS Code 中,一键安装 MCP Server!

    大家好!我是韩老师. 本文是 MCP 系列文章的第三篇.之前的两篇文章是: Code Runner MCP Server,来了! 从零开始开发一个 MCP Server! 经过之前两篇文章的介绍,相信 ...

  9. tesseract引擎RVV代码学习笔记

      Tesseract 是一个开源的 OCR(Optical Character Recognition,光学字符识别)引擎,可将图像中的文本转换为机器可读的文本格式.由于组内曾经有同事为这个项目贡献 ...

  10. 3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列

    3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列 @ 目录 3. RabbitMQ 的(Hello World) 和 RabbitMQ ...