【问题标题】:EC2 ssh broken pipe terminates running processEC2 ssh 损坏的管道终止正在运行的进程
【发布时间】:2021-06-07 19:02:29
【问题描述】:

我正在使用 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”被终止。

关于正在发生的事情以及我能做些什么来防止这种情况发生有什么想法吗?

【问题讨论】:

    标签: linux unix ssh amazon-ec2 broken-pipe


    【解决方案1】:

    你应该试试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>
    

    【讨论】:

    • 即使使用screen,我的管道也会损坏。
    • 我也拿到了破管子。但是当我重新登录 ubuntu 服务器时,我仍然可以看到屏幕在运行。命令:屏幕-ls。当我输入screen screen -R XXXX,其中XXXX是屏幕编号,我可以看到代码仍在运行。它奏效了。
    【解决方案2】:

    一个简单的解决方案是通过在命令中附加一个 & 符号 &amp; 将进程发送到后台:

    nohup python myapplication.py > myprogram.out 2>myprogram.err &
    

    即使您关闭 SSH 会话,该进程仍将继续运行。您始终可以通过抓取输出文件的尾部来检查进度:

    tail -n 20 myprogram.out
    tail -n 20 myprogram.err
    

    【讨论】:

      【解决方案3】:

      我实际上最终通过路由器配置意外修复了这个问题,允许所有 ICMP 数据包。我允许所有 ICMP 数据包诊断出一些网站随机加载缓慢的奇怪问题,我注意到我的 SSH 终端都不再死机了。

      我使用的是 Ubiquiti EdgeRouter 4,所以我在这里遵循了这个指南https://community.ubnt.com/t5/EdgeRouter/EdgeRouter-GUI-Tutorial-Allow-ICMP-ping/td-p/1495130

      当然,您必须遵循自己路由器的独特说明才能允许 ICMP 通过防火墙。

      【讨论】:

        【解决方案4】:

        在我看来,如果这个过程需要一个多小时,这里的解决方案可能会更好 https://forums.aws.amazon.com/message.jspa?messageID=914326

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-26
          • 2012-05-15
          • 1970-01-01
          相关资源
          最近更新 更多