bash - 尽管有ServerAliveInterval/nohup,但通过远程登录进行SSH超时

标签 bash shell ssh

由于无法控制的原因,我进行了如下设置:

本地:script1.sh,它通过ssh在Wikitech上的远程服务器上调用script2.sh,然后等待script2.sh完成

远程:script2.sh,它在Wikidb上执行SQL查询并将结果写入文件“file.txt”。

在我的本地script1.sh中,我具有:

nohup ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=1000 user@remote "path/to/script2.sh $ARG1 $ARG2 $FILENAME"

在我的远程script2.sh中,我有一个查询,需要很长时间才能执行。思考时间。我没有太多余地来优化查询。
nohup sql enwiki "$QUERY">$FILENAME

执行script2.sh中的查询后,输出将重定向到“file.txt”。script1.sh(正在等待该文件),然后将“file.txt”向下sftps到本地,并将其发送以进行下游处理。

整个过程一直在本地shell的“nohup.out”中出现Write failed: Broken pipe错误,导致故障继续发生。

我已经放入nohupServerAliveIntervalServerAliveCountMax来尝试解决此问题,但这似乎没有帮助。

如果远程文件是完全创建的,则没有任何内容可写。

请帮忙?

最佳答案

我想你也应该重定向以下行的输出:

nohup ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=1000 user@remote "path/to/script2.sh $ARG1 $ARG2 $FILENAME" &>out.log

如果没有帮助,请使用bash -x执行脚本,以便我们可以准确地发现问题发生的位置

关于bash - 尽管有ServerAliveInterval/nohup,但通过远程登录进行SSH超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30044484/

相关文章:

regex - 根据列值连接两个文件。原始文件有重复值

Bash shell 脚本 : how do I exit and restart the script?

shell - docker 容器的启动脚本

shell - 在 shell 中使用管道执行变量

perl - Perl Net::SSH::Perl不加载我的环境变量与通过SSH连接

python - 何时以及为何使用 load_host_keys 和 load_system_host_keys?

bash - 如何在 Bash 中将字符串拆分为多行?

python - sed 不适用于大文件[寻找其他选项]

bash - 如何使用 BSD/OS X sed 在匹配后删除/删除 X 行

ssh - 将 Docker 安装到 Vagrant VM 失败