尽管ServerAliveInterval / nohup,远程登录时SSH超时

时间:2015-05-05 04:47:31

标签: 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”下移到本地,并将其发送到下游进行处理。

整个事情在本地shell上的“nohup.out”中出现Write failed: Broken pipe错误。

我已经放入nohupServerAliveInterval以及ServerAliveCountMax来尝试解决问题,但这似乎没有帮助。

如果创建了远程文件,则远程文件没有写入任何内容。

请帮帮忙?

1 个答案:

答案 0 :(得分:0)

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

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

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