切断後にシェルを再起動する方法

切断後にシェルを再起動する方法

リモートCentOS 5.6システムでいくつかのタスクを実行していますが、ネットワークはオフラインのままです。再接続した後に中断されたセッションを再開する方法はありますか?

編集:私はいくつかのアップデートとインストールにyumを使用していますが、何が起こっている間もプロセスが停止し続けると、これが問題になる可能性があるかどうか心配されます。

答え1

回避策はありませんが、これを防ぐためにtmuxtmuxを起動し、作業を開始して続行します。戻って接続が切断された場合は、再接続して と入力するだけです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

答え2

tmuxと画面の提案はどちらも良い提案です。これはあなたの質問に対する回答を示唆していますが、実際には明記していません。質問に対する答えは:決してそうではありません。 SSH経由でログインしている場合、接続が失われるとシェルは終了します。解決策は、ログインしてすぐに仮想端末の種類を起動することです(これはdtach、、、、abducoなどtmuxのツールを使用して実行できますscreen)。接続が失われると、現在存在するシェルは終了しますが、新しいシェルを開き、実際に作業しているシェルを実行している仮想端末に再接続できます。

答え3

誰かがreptyr答えの代わりにコメントを付けて投票することはできませんが、修正された質問に対する良い答えであるようで、CentOSでもうまく動作します。

望むより:

再接続した後に中断されたセッションを再開する方法はありますか?

編集:私はいくつかのアップデートとインストールにyumを使用していますが、何が起こっている間もプロセスが停止し続けると、これが問題になる可能性があるかどうか心配されます。

同様に、yumアップデートセッションへのリモート接続が失われました。それで検索してこの質問を見つけました。その後、今度は再接続して画面を使用しました。

  1. SSHを再接続
  2. 画面
  3. 上記のリンクに沿ってReptyrをインストールしてください。
  4. ps -a grepヤム|
  5. レプテルPSID

数時間前にYumが教えてくれた回復のヒントを見ました。

技術的に答えはすべて正しいです。これは、一時停止したセッションを再開するのではなく、孤立プロセスを現在のセッションにリセットすることです。

そしてそれは非常に便利です。また...

答え4

いいえ、接続を切断した後はシェルを再起動できません。代わりに実行できることは、切断後も実行中のコマンドを実行し続けることです。

これを達成するには、通常、ほとんどのシェルに組み込まれているコマンド「nohup」および「disown」コマンドを使用します。つまり、何もインストールする必要はありません。ただし、これは非対話型コマンドにのみ適用されます。

したがって、ステップは次のようになります。

  1. サーバーにログイン
  2. "nohup sudo yum update &"コマンドを実行します。 (これにより、現在のディレクトリのnohup.outファイルにすべての出力が記録されます。)
  3. 「%1 拒否」を実行
  4. この時点で、自由に接続を切断するか、接続が切断されるのを待ってください:)

サーバーに戻るときに「tail nohup.out」のみを入力すると、実行中のコマンドを表示できます。

関連情報