强制退出后,使python脚本在.txt文件中写入输出

时间:2018-05-29 18:56:47

标签: python ssh file-io

我使用以下命令通过SSH在服务器上运行Python脚本:

nohup python3 python_script.py>> output.txt的

它运行了很长时间并且(可能)创建了有用的输出,所以我想强制它现在停止。如何将它到目前为止的输出写入output.txt文件?

当我开始运行脚本时,文件是自动创建的,但是大小为零(到目前为止还没有写入任何内容)。

1 个答案:

答案 0 :(得分:2)

罗伯特在他的评论中说,检查你期望进入文件的输出实际上是在那里而不是stderr。如果进程已经运行且已经很长时间没有任何响应或写入输出文件,我认为有3个选项:

  1. 它正在产生外出,但它没有达到你期望的地方(Roberts回应)
  2. 它正在生成输出,但它已被缓冲,并且由于某种原因尚未被刷新
  3. 没有生成任何输出
  4. 选项3很简单:等待更长时间。选项1& 2有点棘手。如果您期望此过程有大量输出,您可以检查运行脚本的python实例的内存消耗,看它是否在增长或非常大。此外,您可以使用lsof查看文件是否打开,并了解它正在使用它做什么。

    如果您发现输出似乎在/ dev / null之类的某个位置,请查看有关重定向现有进程输出的this答案。

    如果您有一个尚未刷新的巨大缓冲区,您可以尝试使用ps获取PID,然后使用kill -STOP [PID]暂停该过程并查看您可以在哪里使用GDB。

    除非它非常痛苦,否则我可能只是重新启动整个过程,但是定期刷新脚本,也许还有一些额外的状态报告,这样你就可以知道发生了什么。如果您可以发布代码也可能有所帮助,因为根据程序的编写方式,您的情况可能还有其他选项。