1

リモート マシンでの大規模な数学的計算ジョブの実行を自動化するスクリプトが必要です。現在、私はこれを行います:

  • sshリモートマシンへ。matlab スクリプトを実行する
  • 定期的にチェックインして、ジョブがまだ完了しているかどうかを確認します
  • 仕事が終わったらscp、結果を含むファイルを手動で自宅のマシンに戻します。

このジョブを実行するために、スクリプトでこれらの種類の行を使用しようとしました (スクリプトが私のマシンで実行されることに注意してください)。

ssh nohup matlab -r theScript; exit;
scp remote@~/files ~/files

これはうまくいきません。しばらくすると、ssh セッションが終了し、ジョブがまだ終了しておらず、ファイルがまだ存在していなくても、スクリプトは scp の実行に進みます。

私がする必要があるのは、おそらく定期的に ssh を実行し、grep を使用してシグナルをnohup.out探してファイルを読み取ることによって、ジョブが完了したかどうかを定期的に確認することだと思います。DONE!次に、それが表示されたら、ファイルをコピーして戻します。DONE!しかし、これは複雑なようで、メッセージをコンピューターに戻して条件付きで実行する方法がわかりません(DONE信号が表示された場合は、このようなことを行います...) 何かアイデアはありますか?

4

3 に答える 3

1

ええ、sshはタイムアウトか何かである可能性があります。そうです、あなたの最良の選択肢は投票することです。例えば

RUN="$(date +%Y%m%d-%H%M%S)"
ssh remote " nohup bash -c \"( matlab -r theScript; echo \$? > $RUN.done ) >$RUN.log 2>&1 </dev/null &\" "
DONE=""
while [ -z "$DONE" ]
do
    sleep 60
    DONE="$(ssh cat $RUN.done 2>/dev/null)"
done
if [ $DONE -eq 0 ]
then
    scp ...
else
    # Optionally fetch logfile
    # scp $RUN.log@remote ...
    echo "ERROR in remote matlab...."
fi
于 2011-07-15T04:45:39.923 に答える
1

でこれを設定する方法があるようssh_configです。

このページでは、その方法について説明しています: http://nileshbansal.blogspot.com/2007/02/prevent-timeouts-in-ssh.html

于 2011-07-15T04:41:31.027 に答える
0

ファイルServerAliveIntervalに を設定してみてください。ssh_configそうすれば、リモート コマンドが終了するまで SSH セッションは閉じられません。

ここを参照してください。

于 2011-07-15T04:41:18.187 に答える