当前位置: 首页 > 知识库问答 >
问题:

Nohup没有将日志写入输出文件

伏默
2023-03-14

我使用以下命令在后台运行python脚本:

nohup ./cmd.py > cmd.log &

但nohup似乎没有向日志文件写入任何内容。cmd.log已创建,但始终为空。在python脚本中,我使用sys.stdout.write而不是print来打印到标准输出。我做错什么了吗?

共有3个答案

梁丘伟
2023-03-14

>

  • 使用-unohup对我很有效。使用-u将强制stdoutstderr流取消缓冲。它不会影响stdin。所有内容都将保存在“nohup.out”文件中。像这样-

    nohup python -u your_code.py &
    

    您也可以将其保存到您的目录中。这种方式-

    nohup python -u your_code.py > your_directory/nohup.out &
    

    此外,您可以使用PYTHONUNBUFFERED。如果将其设置为非空字符串,则其工作方式与-u选项相同。用于在运行python代码之前运行下面的命令。

    export PYTHONUNBUFFERED=1
    

    export PYTHONUNBUFFERED=TRUE
    

    另外,我建议使用cronjob之类的工具在后台运行,并安排执行。

  • 左丘弘致
    2023-03-14

    看起来您需要定期刷新标准输出(例如,sys.stdout.flush())。在我的测试中,在程序退出之前,Python不会自动执行此操作,即使使用print

    乐正浩宕
    2023-03-14

    可以使用-u标志运行Python,以避免输出缓冲:

    nohup python -u ./cmd.py > cmd.log &
    
     类似资料:
    • 问题内容: 我使用以下命令在后台运行python脚本: 但nohup似乎没有向日志文件写入任何内容。命令日志是 已创建但始终为空。在python脚本中,我使用 而不是打印到标准输出。我在做什么 有什么不对劲吗? 问题答案: 看起来你需要定期刷新stdout(例如。 ). 在我的测试中,Python甚至不会自动做到这一点 直到程序退出。

    • 问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至

    • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

    • 我创建了以下groovy脚本,以展示如何使用简单的注释将日志字段注入我们的类 当我运行groovy脚本时,我得到以下结果(在GROOVY CONSOLE上) 请告知我们如何将结果打印到WIN机器中的日志文件中,以及需要向groovy脚本中添加什么才能启用它? 例如: 日志文件 C: \程序文件\日志\我的。非常棒。日志 (应包含结果:)

    • 在HDFS中写入日志文件的最佳方式是什么?我正在尝试配置Apache Flume,并尝试配置能够为我提供数据可靠性的源。我试图配置“exec”,后来也查看了“spooldir”,但flume.apache上的以下文档。org对我的意图表示怀疑- 执行来源: 最常请求的功能之一是像“tail -F file_name”这样的用例,其中应用程序写入磁盘上的日志文件,Flume 尾随文件,将每一行作为事