企業ネットワーク上の任意のホストからssh
を実行できるredhatの仮想インスタンスを実行しています。一部のスクリプトの実行中にssh
セッションが切断され、切断された可能性があります。 who
コマンドは、ローカルでドロップされた接続をリストします。 ssh
で再接続すると、まったく新しいセッションが開始されます。元のセッションに接続する方法はありますか?できない場合は、殺せますか? rootと物理的なアクセス権があります。元のセッションでは画面を使用していませんでした。
リモートで screen を使用してから、sshで戻ったときに、screenのそのインスタンスに再接続します。
しかし、それ自体ではsshセッションに再接続することはできません。スクリーン(またはそれを促進するためにスクリーンのようなもの)を使用する必要があります。
この質問 を見て、少なくとも1つの他のオプションと、そのオプション(tmux)と画面の違いを確認してください。その質問の答えを読んだ後...私は実際に言うでしょう tmux の方が良い
ああ、はい、プロセスを(フォークされたbashを含めて)kill
停止できます。skill
を使用してユーザーを名前で強制終了することもできますが、そのユーザーがrootであるかどうかは疑わしいです...できないものを殺そうとするかもしれません。
回答が数回更新されました
デフォルトでは、破棄されたsshセッションに再接続することはできません。ただし、sshセッション内でプロセスを設定できます。新しいsshセッションを再確立した後で、sshセッションに再接続できます。
使用したいのは、screen、またはさらに優れた、byobuと呼ばれる使いやすい画面ラッパーです。
画面では、同じsshセッションで複数の仮想端末セッションを実行できます。 チュートリアル および ヘルプページ が利用可能です。
byob は、ctrl-aからのキーの組み合わせの代わりに単純なファンクションキーで新しい画面を簡単に開くことができるラッパーです。また、名前を付けることができる開いているすべての仮想端末のステータス行も表示されます。
もう1つの素晴らしい機能は、SSH接続が切断されている間、すべての画面が表示され続けるという事実です。もう一度sshを介して接続し、byobuを呼び出すだけで、すべてが以前と同じです。
ついにいくつかの スクリーンショット byobuの。
前述のように、おそらくscreenが最善の策です。セッションが切断された場合でも、実行は継続されます。 「screen -list」と入力して利用可能なセッションを表示し、「screen -r」と入力して必要なセッションを表示します。ちょっとしたヒントですが、全体をコピーして貼り付けるのではなく、セッション文字列をタブ補完することができます。
ただし、画面が煩わしい場合があります。私のクライアントでは、コンソールで簡単に上にスクロールして履歴を表示することはできません。予想とは少し異なる動作をします。長時間実行しているプロシージャが強制終了されないようにする場合は、「Nohup」を使用します。接続が失われたときにprocがシャットダウンされるのを防ぎます。ただし、監視したい場合は、必ずproc出力をファイルに送信してください。また、bashスクリプトがある場合は、Nohupの前で「bash」を明示的に呼び出す必要があると思います。例...
Nohup bash ./myscript.sh> output.log 2>&1&
つまり、Nohupは、procの強制終了を防ぐために、スクリプトにbash固有のものがある場合、bashが明示的にbashを呼び出すようにします。エラーになり、最後に「&」がバックグラウンドでプロシージャを実行します。