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

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 。如果有错误,它将是类型。 编辑 检查后移至

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

    • 问题内容: 在我的机器上,我有一些软件可以在终端中接收命令并返回值列表。 要运行它,我必须输入以下内容: 我正在尝试将其作为python程序的一部分运行。当我运行以下命令时: 然后我得到想要返回到终端的值(其中epoch_name是文件名的变量名)。但是,当我尝试将结果写入文件时: 产生了文件123.txt,但它为空。 我知道我放错了“和/或’字符,但是我不知道它们应该去哪里。 任何帮助将不胜感激

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