我正在使用EC2实例运行大型工作,我估计大约需要24小时才能完成。我得到了ssh broken pipe ec2
中描述的相同问题我按照上面帖子中的建议/解决方案,在我的ssh会话shell中,我通过以下命令启动了我的python程序:
nohup python myapplication.py > myprogram.out 2>myprogram.err
一旦我这样做,连接保持完整的时间比我没有使用nohup
的情况更长,但它最终会失败broken pipe error
而我又回到原点。这个过程' python myapplication.py
'因此终止。
有关正在发生的事情的任何想法以及我可以采取哪些措施来防止这种情况发生?
答案 0 :(得分:10)
您应该尝试screen
。
Ubuntu的:
apt-get install screen
CentOS的:
yum install screen
通过
开始新的屏幕会话$> screen
列出您创建的所有屏幕会话
$>screen -ls
There is a screen on:
23340.pts-0.2yourserver (Detached)
1 Socket in /var/run/screen/S-root.
接下来,恢复您的屏幕
$> screen -R 23340
$> screen -R <screen-id>
答案 1 :(得分:0)
一个简单的解决方案是通过在命令中附加一个&符号&
来将进程发送到后台:
nohup python myapplication.py > myprogram.out 2>myprogram.err &
即使您关闭SSH会话,该过程也将继续运行。您始终可以通过抓住输出文件的尾部来检查进度:
tail -n 20 myprogram.out
tail -n 20 myprogram.err
答案 2 :(得分:0)
实际上,我最终通过路由器配置意外修复了此问题,并允许所有ICMP数据包。我让所有ICMP数据包诊断出一个奇怪的问题,即某些网站随机缓慢加载,并且我发现我的SSH终端都没有死亡。
我使用的是Ubiquiti EdgeRouter 4,所以我在这里https://community.ubnt.com/t5/EdgeRouter/EdgeRouter-GUI-Tutorial-Allow-ICMP-ping/td-p/1495130遵循了本指南
当然,您必须遵循自己路由器的独特说明,以允许ICMP通过防火墙。
答案 3 :(得分:0)
在我看来,如果这是一个需要一个多小时的过程,这里的解决方案可能会更好 https://forums.aws.amazon.com/message.jspa?messageID=914326