回答:
適切な質問への答えは次のとおりです。できません。主な問題は、認証手順が同期していないことだと思います。それだけでは機能しません。
お気づきのように、解決策は可能な場合はscreenを使用することです(ところで、tmuxはscreenの代替です)。
byobu
は、フロントエンドをscreen
(またはtmux
)使用するのに便利で、素敵です-間違いなく一見の価値があります(:
長期にわたるプロセスを実行するには、screenを使用します。またはするか、より使いやすいインターフェイスが必要な場合 o延ます。
画面では、次を使用できます。
screen [program] [args]
これは、スクリーンセッション内で[プログラム]とその[引数]を実行します。プログラムが終了すると、セッションは自動的に閉じられます。プログラムの実行後にセッションを保持したい場合は、引数なしでscreenを実行するだけで、セッション内に新しいプロンプトが表示されます。CTRL + A + Dは、現在のセッションから端末を切り離します。
前のセッションに再接続するには:
screen -r
開いているセッションが1つだけの場合、すぐに再接続されます。複数のセッションが進行中の場合、どのセッションにアタッチするかを尋ねられます。セッション名がわかっている場合は、このコマンドラインに引数として追加するだけです。
By風は素晴らしい改善です。screenに基づいていますが、現在のすべてのセッションをタブとして表示し、それらを簡単に移動できるショートカットを提供するバーを下部に提供します。あなたはできる:
アドバイス:ユーザーrootでセッションを開いたままにしないでください。誰かが(ローカルまたはリモートで)端末にアクセスすると、進行中のセッションに簡単に再接続し、システムをルートとして使用できます。必要に応じて、必要に応じて共通ユーザーとsudoの個別のコマンドラインを使用してセッションを開始することをお勧めします。
壊れたSSHセッションに再接続することはできませんが、SSH 内で実行されているプロセスの親を変更することができます。機能的には必要なものと同等です。
あなたの場合、新しい SSHセッション、セッションなどapt-get
から制御されるプロセスを引き継ぎます。これに対する私のお気に入りはコマンドです:screen
reptyr
$ sudo apt-get install reptyr
$ ps ax | grep apt-get
10626 pts/8 R+ 0:32 apt-get upgrade
次に、プロセスに見つかったpidを使用します。
$ sudo reptyr -T 10626
または、それがうまくいかない場合、試してください:
$ reptyr 10626
この段階の後、すべてのキーボード入力は、引き継いだプログラムに送られます。残念ながら、次のようなSSHセッションの古い出力は表示されません。apt-get
、確認を求める出力。
基本的に同じように機能するreptyr
(つまり、ptrace
デバッグ接続を介して)他の複数のツールがあります。次の質問と回答を参照してください。
上記の手順では、reptyr 10626
使用ptrace
しながらデバッグアタッチメントsudo reptyr -T 10626
コマンドがTTYが盗み使用し、好ましいある(詳細)。
最後に、この方法でSSHセッションを引き継ぐことができない理由は、sshd
プロセスがホスト端末によって制御されず、代わりに端末のスレーブ部分(デバイス)を提供するpts
一方で、それを制御するマスター部分がクライアントマシン、ここでは故障したSSHセッションが間にあります。でそのようなsshd
プロセスを強制的に引き継ぐとreptyr -s <pid>
、キーボード入力はアクティブな子プロセスではなく、そのプロセスに送られます。したがって、「Ctrl + Z」は単にそれを殺しますsshd
。
do-dist-upgrade
したがって、サスペンドに入ったラップトップからsshを使用して実行していましたBroken pipe
。マシンに戻ると、アップグレード関連のプロセスがまだ実行されており、その中whiptail
に入力(ディスプレイマネージャーを選択)を求め、それに関連してルート所有のプロセスが表示されていましたSCREEN
。私が行うことができたsudo su -
とscreen -r
セッション、セッションにアタッチする、見よ、私は目の前に入力を受け取ることができるホイップテールダイアログを持っています。シームレスにアップグレードを再開できました。
注:これはUbuntu 14.04から16.04へのアップグレードでした。
apt-get
プロセスがまだ実行されていることに驚いています。SSHまでのプロセスチェーン全体とともに消滅していたはずです。/ セッションでdo-dist-upgrade
自動的に開始することに気づきました:状況によっては同じかもしれませんか?screen
byobu
apt-get