9

plink 経由で bash スクリプトを実行しようとしています。スクリプトは次のようになります。

echo "@ Starting process..."
./bin/process "process.cfg" &
disown %1
echo "@ Done!"

Linux のターミナルでこのスクリプトを実行すると、すべて正常に動作します。「やった!」の後。コマンド プロンプトが表示されます (予想どおり)。

このスクリプトを plink 経由で実行すると、「完了!」の後に出力が停止します。plink はコマンド プロンプトに戻らず、+c まで「ハング」します。

スクリプトはファイルに配置され、-m パラメーターを使用して plink に渡されます。

スクリプトの最後に「logout」、「exit」、「set -e」を追加しようとしましたが、役に立ちません。また、-batch、-T、または -N を plink コマンドに追加しても成功しませんでした。

これを修正する方法についてのアイデアはありますか?

4

3 に答える 3

6

わかりました、端末から stdout/err を切り離さなければならなかったようです。通常の端末ではもちろん問題にはなりませんが、このため plink は「ビジー」状態のままでした。

そのため、(コマンドを実行した) bash スクリプト内で次のように変更する必要がありました。

./bin/process "process.cfg" &

に:

./bin/process "process.cfg" /dev/null 2>&1 &

plink は、bash スクリプトの最後で正しい「終了」状態を返すようになりました。

于 2014-02-07T07:25:45.323 に答える
5

plink.exe -P PORT_NUM -v USERNAME@HOST_IP -pw PASSWD "COMMAND >/dev/null &"

  • &プロセスをバックグラウンドに移動します
  • > /dev/null標準出力/標準エラー出力をダミーのヌル デバイスに出力することで、コマンドをサイレント モードで実行できます。

注: シェル コマンドは「二重引用符」で囲まれています

于 2014-11-22T02:02:26.683 に答える
0

Plink には、-batchすべての対話型プロンプトを無効にするパラメーターがあります。ctrl-Cまでハングしないようにするために、ここで必要なものかもしれません.

于 2014-01-30T12:29:49.140 に答える