0

私のbashスクリプトでは、次のことを行います。

ssh me9@some_mad_server.com;
cd ~/apple;
echo "Before Exit"
exit
echo "After Exit"

終了前または終了後は表示されません。その段階でのスクリプトが別のコンソールにあるため、Before Exist が表示されない理由は理解できます。しかし、Exit がスクリプトの終了を意味する場合、なぜ After Exit がログに記録されないのか混乱します。

どんな助けでも感謝します。

4

2 に答える 2

3

リモート ホストで一連のコマンドを実行するには、呼び出しのsshで実行するのではなく、コマンド ラインでそれらを渡す必要があります。このような:ssh

ssh me9@some_mad_server.com '
    cd ~/apple
    echo "Before Exit"
'
echo "After Exit"

これは、複数行の文字列を使用して複数のコマンドを渡します。Anexitは、文字列の末尾に到達すると暗黙的になります。

重要なのは、引用符で囲まれた文字列内のコマンドがリモート ホストで実行され、最後のコマンドがechoローカル サーバーで実行されることです。わかりやすくするために、リモート コマンドをインデントしました。

于 2013-09-04T20:50:10.487 に答える
1

これには screen を使用できます。

screen -d -m <command>

screen -r を使用して、その画面に再度接続します

screen -r <screen ID>
于 2013-09-04T20:18:47.323 に答える