1

SSH を使用してリモート サーバー上にディレクトリを作成するための簡単なスクリプトがあります。

    while read memberName; do
        ssh ${serverPath} "mkdir -p ${filePath}"
        wait
    done < sqlRes.txt

(私はそれを少し単純化しました - これらの変数は存在し、問題ありません)。

各 SSH 呼び出しを (& を使用して) バックグラウンド ジョブにすると、うまく機能しますが、完全には機能しません (たとえば、200 個のディレクトリを作成し、170 個しか実行しないはずです)。

このままでは、sqlRes.txt の最初のエントリの後でループを終了し、エラー メッセージは表示されず、ステータスが正常に返されます。

sleep コマンドと wait コマンドを試しましたが、どちらも役に立ちません。

おそらくサブシェルの制限があると思いますが、次を試す前に「待機」して各サブシェルを確実に閉じる必要があると思いましたか?

何かアイデアはありますか?

参考までに - Linux RedHat の ksh

4

1 に答える 1

1

申し訳ありませんが、さらに検索して答えが見つかりました(sshはインタラクティブで、すべての入力を受け取ります。「ssh -n」に変更され、すべてOKです)。

于 2013-02-28T13:00:22.853 に答える