回答:
方法はありませんが、これを防ぐにはを使用するのが好きtmux
です。tmuxを起動し、操作を開始して、そのまま進みます。戻って接続が切断されたことがわかった場合は、再接続してを入力するだけtmux attach
です。
以下に例を示します。
$ tmux
$ make <something big>
......
Connection fails for some reason
Reconect
$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]
$ tmux attach -t 0
Back in the tmux sesion
tmuxとscreenの推奨事項は両方とも良い提案です。彼らはあなたの質問に対する答えを暗示していますが、実際にはそれを述べていません。質問に対する答えは、「方法はありません」です。ssh経由でログインした場合、接続が切断されるとシェルは終了します。回避策は、ログインして、何らかの種類の仮想端末(などtmux
)をすぐに起動することです。接続が切断されると、現在いるシェルは終了しますが、新しいシェルを開いて仮想端末(実際に作業をしているシェルを実行している)に再接続できます。
ウィリアムが言ったように、短い答えはノーです、方法はありません。これを防ぐには、接続を失う前にscreenコマンドを使用できます
いいえ、切断後にシェルを回復することはできません。代わりにできることは、実行していたコマンドが切断後も引き続き実行されるようにすることです。
これを実現するには、「nohup」コマンドと「disown」コマンドを使用します。これらのコマンドは通常、ほとんどのシェルの組み込みコマンドです。つまり、何もインストールする必要はありません。ただし、これは非対話型コマンドでのみ機能します。
したがって、手順は次のようになります。
サーバーに戻ったら、単に「tail nohup.out」と入力して、コマンドの実行状況を確認します。
誰かが答えではなくコメントにレプティルを追加したので、私はそれを支持することはできませんが、編集された質問に対する良い答えのようで、CentOSでうまく機能しました。
参照:https : //github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
再接続後にハングしたセッションを回復する方法はありますか?
編集:yumでいくつかのアップデートとインストールを行っており、プロセスが何をしていてもハングしている場合、これが問題になるかもしれないと心配しています。
同じことで、yum updateセッションへのリモート接続を失いました。だから私はこの質問を検索して見つけました...そして今度は再接続してスクリーンを使用しました:
そこには、yumが数時間前に与えていた回復されたプロンプトがあります。
技術的には答えはすべて正しいです。これはハングしたセッションの回復ではなく、孤立したプロセスの現在のセッションへの親子化です。とても便利です...
多くの人が示唆screen
しているようにtmux
、どちらも基本的な機能をサポートしていますが、明確な特定の機能を持っているため、すべての場合において他の人より優れているとは言えません。たとえば、Window-splittingをサポートしているのはtmux のみですが、GNU画面のみが(Ctrl + ar)で長い行の折り返しを切り替えることができます。詳細な比較はこちらをご覧ください。
sshのこの問題を修正するためのツールもあります。
Autosshは、sshのコピーを開始して監視し、必要に応じて停止したり、トラフィックの通過を停止したりするプログラムです。アイデアはrstunnelからのものです。
Moshは、ローミングを可能にし、断続的な接続をサポートし、ユーザーのキーストロークのインテリジェントなローカルエコーとライン編集を提供するリモートターミナルアプリケーションです。MoshはSSHの代替品です。特にWi-Fi、セルラー、および長距離リンクを介した、より堅牢で応答性に優れています。