出于无法控制的原因,我有这样的设置:
本地: script1.sh
,它在ssh上的wikitech上调用 script2.sh
,然后等待 script2.sh
完成
远程:script2.sh
,在WikIDB上执行SQL查询,并将结果写入文件" file.txt"。
在我的本地脚本1.sh中,我有:
nohup ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=1000 user@remote "path/to/script2.sh $ARG1 $ARG2 $FILENAME"
在我的远程脚本2.sh中,我有一个查询,需要很长时间才能执行。思考时间。我没有太多的余地来优化查询。
nohup sql enwiki "$QUERY">$FILENAME
script2.sh中的查询执行后,将输出重定向到" file.txt"。 正在等待此文件的 script1.sh
,然后将" file.txt" sfts降低到本地,然后将其发送以处理下游。
整个过程都在本地壳上的" nohup.out"中的Write failed: Broken pipe
错误不断破裂。
我已经放入了nohup
S和ServerAliveInterval
和ServerAliveCountMax
来尝试解决问题,但这似乎没有帮助。
如果远程文件完全是创建的,则没有编写它们。
请帮助?
我想您也应该重定向以下行:
nohup ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=1000 user@remote "path/to/script2.sh $ARG1 $ARG2 $FILENAME" &>out.log
如果没有帮助,请使用bash -x
执行脚本,以便我们可以准确地捕获问题发生的地方