SSHコマンドをリモートで実行し、出力をローカルに表示する必要があります。ただし、接続が切断された場合でも、コマンドを実行したままにしておきます。
ログインと実行についてはあまり話していませんが、ssh user @ remotehost 'commands && command etc'を実行しています。
接続が切断された場合でもコマンドを確実に実行するにはどうすればよいですか?
これを行うための最良の方法は、screenを使用することです。これにより、接続が切断された場合でもセッションを永続的に開いたままにします(そして、再び使用を開始したい場合は、screen -r
を実行すると、再び開かれます。 )。
実行したいコマンドの前にscreen
を前に付けると(例:ssh -t user@Host screen command
)、ジョブが実行されます。
シェルのバックグラウンドで実行したい場合は、全体に&
を追加することもできます。
あなたが再開できる永続的なセッションを探していますか、それとも単に接続解除が中止を中止するのを止めたいですか?
前者の場合はscreen
を使用し、後者の場合はNohup
を使用します。
先に述べたように、screen
はすべてのトリックを実行できます。しかし、必要なものだけではありません。私は長年スクリーンを使用してきましたが、システムにログインするたびにスクリーンを使用しています。 screen
をインストールして、そのような構成で~/.screenrc
を作成してみてください。
sessionname vcflists
startup_message off
deflogin off
vbell off
msgminwait 0
msgwait 10
log off
backtick 1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY} %1` %{= kg} %0c %{= bY} %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "
次に、screen -Rd vcf
を実行します。それがscreenの望ましい呼び出しです。以前に作成されたvcf *という名前のセッションに再接続するか(あいまいな場合は警告が表示されます)、セッションがまだ開かれていない場合は作成されます。 CTRL+A すべてを行うメタキーです。 CTRL+A C
(CTRL+A、その後 C)セッション内に新しいウィンドウ(画面)を作成します。 CTRL+A SPACE
ラウンドでフォーカスを次のウィンドウに移動します。CTRL+A D
現在のセッションを切り離して、接続間ですべてのウィンドウを機能させます。 looooongタスクを起動した場合は、画面から切り離して後で再接続して、何が起きているかを確認できます。 sshセッションが失われた場合も同じことが起こります-画面は開いているすべてのウィンドウとすべてのタスクが起動された状態で生き続けます。
画面内のいくつかのウィンドウを閉じたい場合は、そのシェルからexit
を実行してください。すべてのウィンドウのすべてのシェル/タスクを閉じて画面を終了する場合は、CTRL+A CTRL+\
を押し、要求されたら「Y」を押すだけです。
残りすべてについては、man screenを参照してください。
私は、信頼できるsshのような「接続」に代わるこの代替案を見てきました。
私は通常行うでしょう:
Nohup mycommand &
tail -f Nohup.out