• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在Ubuntu中过早终止长时间运行的批处理过程

python 来源:pabloxrl 8次浏览

我想批量使用Keras训练深层神经网络的一些python脚本,我遇到了第一个python脚本完成时整个批处理停止的问题。在Ubuntu中过早终止长时间运行的批处理过程

我试过写一个python包装器,但仍然没有改变。我不知道这个问题是否与操作系统相关,或者它与Keras框架或python有关。

的第一次尝试是写一个shell脚本:

#!/bin/sh 
for i in {1..10}; do python my_experiment.py; done 

但是,运行my_experiment.py一次之后,整批停止。

我试着使用Python:

import subprocess 
import os 

def main(): 
    for i in xrange(10): 
     subprocess.call(['python', os.path.join(os.getcwd(), 'my_experiment.py')]) 

if __name__ == "__main__": 
    main() 

但我仍然得到同样的结果。

有没有人遇到过这个问题?如果不是,我会欢迎想法尝试并弄清楚发生了什么。

此外,我通过SSH运行这个进程在远程机器上,以下列方式:

$ ./batch_script.sh & 
$ disown 

或者在Python的情况下:

$ python batch_script.py & 
$ disown 

干杯

===========解决方案如下:

如果某些进程仍然具有标准输入或输出链接到tty,或者某些子进程没有正确地被拒绝,则可能会发生这种情况。

可能的解决方法是使用终端多路复用器(如screen或tmux)来解决在SSH登出后留下后台进程的问题。使用比关闭/禁止一个进程要容易得多。

通常,您将运行screentmux,您将获得一个新的终端会话。您将能够从该会话中“分离”并保持运行。在您注销并重新登录后,您将能够’重新连接’到正在运行的会话并查看过程的输出,就好像您从未注销过一样。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)