ssh
企業ネットワークのすべてのホストからアクセスできるRedhatの仮想インスタンスが実行されています。接続が失われたり、そうでなかったりする可能性のあるいくつかのスクリプトの実行中に、私のssh
セッションは中断されます。このwho
コマンドは、まだローカルで切断された接続を一覧表示します。再接続すると、ssh
まったく新しいセッションが開始されます。元のセッションに接続する方法はありますか?そうでなければ殺すことはできませんか?ルート権限と物理アクセス権があります。初期セッションでは画面を使用しませんでした。
答え1
使いたい画面リモートでSSH経由で再接続すると、その画面インスタンスに再接続されます。
しかし、いいえ、SSHセッション自体に再接続することはできません。画面(またはこれを促進するために同様のもの)を使用する必要があります。
見ているこの問題少なくとも1つの他のオプションがあり、そのオプション(tmux)と画面の間にはいくつかの違いがあります。この質問への答えを読んだ後...実際にこれを言いたいと思います。マルチプレクサより良い
kill
はい、プロセス(forked bashを含む)でブロックできますskill
。名前でユーザーを殺そうとするかもしれませんが、そのユーザーがルートかどうか疑問に思うかもしれません。
回答が何度も更新されました。
答え2
デフォルトでは、中断されたSSHセッションに再接続することはできません。ただし、SSHセッション内でプロセスを確立し、新しいSSHセッションをリセットした後、プロセスに再接続できます。
あなたが望むのは、画面を使用することであり、さらにはbyobuというユーザーフレンドリーな画面ラッパーを使用することです。
Screen を使用すると、同じ SSH セッション内で複数の仮想端末セッションを実行できます。 ㅏ地図時間そしてヘルプページ利用可能。
画面Ctrl-Aキーの組み合わせではなく、単純なファンクションキーを使用して新しい画面を簡単に開くことができるラッパーです。名前を付けることができるすべての開いている仮想端末を含むステータス行も表示されます。
もう一つの良い機能は、SSH接続が失われたときにすべての画面が開いたままになることです。 SSH経由で再接続してbyobuを呼び出すと、すべてが以前と同じです。
最後のカップルスクリーンショット画面。
答え3
前述のように、画面はおそらく最良の選択肢でしょう。セッションが削除されても引き続き実行されます。使用可能なセッションを表示するには「screen -list」と入力し、必要なセッションを表示するには「screen -r <session>」と入力します。小さなヒントは、文字列全体をコピー/貼り付けるのではなく、Tabキーを使用してセッション文字列を完成できることです。
しかし、画面が不便かもしれません。私のクライアントでは、簡単に上にスクロールしてコンソールで履歴を表示できません。予想したものとは若干異なる動作をします。長期実行プロセスが終了しないようにするには、「nohup」を使用します。接続が切断されたときにプロセスが終了するのを防ぎます。ただし、これを監視するには、プロセス出力をファイルに送信する必要があります。そして、bashスクリプトがある場合は、nohupの前に「bash」を明示的に呼び出す必要があるようです。一例...
nohup bash ./myscript.sh > output.log 2>&1 &
これはnohupを意味します。プロセスが終了しないようにするには、 bash を明示的に呼び出します。スクリプトにbash関連のエントリがある場合、スクリプトは現在のディレクトリで「myscript.sh」と呼ばれ、出力.logはstdに送信され、ファイルエラーは次のとおりです。バックグラウンドでプロセスを実行するには、最後に「&」と出力します。