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. 理解Rust引用及其生命周期标识(上)

    写在前面 作为Rust开发者,你是否还没有完全理解引用及其生命周期?是否处于教程一看就会,但在实际开发过程中不知所措?本文将由浅入深,手把手教你彻底理解Rust引用与生命周期. 关于本文的理解门槛 本 ...

  2. C语言线程池的常见实现方式详解

    在 C 语言中,线程池通常通过 pthread 库来实现.以下是一个详细的说明,介绍了 C 语言线程池的常见实现方式,包括核心概念.实现步骤和具体的代码示例. 点击查看代码 1. 线程池的基本结构 线 ...

  3. allure 报告空白

    在pycharm 运行py文件后生成的报告内容空白: 尝试方法 替换allure版本号---不好用 用命令生成.html测试报告,再以浏览器形式打开 ** ** 命令 allure generate ...

  4. python ImportError: libGL.so.1: cannot open shared object file: No such file or directory

    前言 python 报错python ImportError: libGL.so.1: cannot open shared object file: No such file or director ...

  5. grpc unable to determine Go import path for

    前言 在 proto 文件夹下执行如下命令: $ protoc --go_out=plugins=grpc:. *.proto 报错:无法确定Go导入路径 protoc-gen-go: unable ...

  6. vue学习一(指令3.v-on,v-for)

    3.1.v-on 绑定事件  可以简写为@ ,按键修饰符    v-on:keyup    =    @keyup 事件修饰符:v-on提供了事件修饰符 修饰符是由点开头的指令后缀来表示的       ...

  7. .NET周刊【3月第2期 2025-03-09】

    国内文章 记一次.NET内存居高不下排查解决与启示 https://www.cnblogs.com/huangsheng/p/18731382 本文讲述了一个ASP.NET Core gRPC服务迁移 ...

  8. 【VMware VCF】启动和关闭 VMware Cloud Foundation 环境的正确顺序。

    为了避免出现数据丢失以及保证 SDDC 组件的正常运行,启动和关闭 VMware Cloud Foundation 环境中的组件应该遵循特定的顺序.比如,在关闭管理工作负载域之前,应该先关闭 VI 工 ...

  9. 【Maven】在 Eclipse 中使用 Maven

    在 Eclipse 中使用 Maven 1 安装 Maven 核心程序 下载地址:http://maven.apache.org/ 检查 JAVA_HOME 环境变量.Maven 是使用 Java 开 ...

  10. Transformer自注意力機制如何捕捉“今昔對仗”

    讀者希望我結合<道德經>等文言文實踐,展示自注意力機制如何捕捉"今昔對仗". 首先,讀者之前指出:在總結鄧鴻的丼型結構時遺漏了關鍵點,並強調要批判瑪律可夫假設而非全面否 ...