由于我无法控制的原因,我有这样的设置:
本地: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
错误。
我已经放入nohup
和ServerAliveInterval
以及ServerAliveCountMax
来尝试解决问题,但这似乎没有帮助。
如果创建了远程文件,则远程文件没有写入任何内容。
请帮帮忙?
答案 0 :(得分:0)
我猜你也应该重定向以下行的输出:
nohup ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=1000 user@remote "path/to/script2.sh $ARG1 $ARG2 $FILENAME" &>out.log
如果它没有帮助,请使用bash -x
执行脚本,以便我们可以准确捕捉问题发生的位置