apt Upgradeを実行するとSSHパイプが破損しています。どうですか?

apt Upgradeを実行するとSSHパイプが破損しています。どうですか?

私はaws debian wheezyサーバーに接続していますが、apt-get upgrade実行中にSSHパイプが壊れています。何も使わずにscreenセッションを復元する方法がないようです。

新しいSSHセッションに再接続して実行すると、次のことがps aux | grep aptわかります。aptdpkgまだ走っている

彼らは文字通り何時間も走っていました。システムライブラリ/バイナリを変更できるため、これらのプロセスを終了するのは安全であるとは想像できません。しかし、どうすればいいですか?キーボード入力などを待っているとどうなりますか?最初にアップデートをインストールするように求められたとき、私はこう言いましたが、追加のyユーザー入力が必要かどうかわかりません。彼らがやっていることを終わらせるためにapt何時間も待つ予定です。しかし、何も起こらない場合はどうすればよいですか?dpkg

答え1

セッションを再取得できません。したがって、このプロセスと対話するために何もできません。

プロセスが実行されていないようです。私の考えでは、これはapt-getおそらくできたと思います。ゾンビこれまで。とにかくpsまたはを使用してプロセスを確認できますtop。実行している場合は、手を離して完了したことを監視してください。アイドル状態のままであれば殺してください。

その後、簡単に実行できますapt-get upgrade 再びプロセスを終了した後にセッションが中断されたときにアップグレードしていたパッケージを完了または修正します。

答え2

SIGINT私は彼らに(キーボード割り込み、つまりCtrl + C)シグナルを送ることがトリックを実行すると思います。

killall -SIGINT apt-get

または

killall -2 apt-get

複数回試してみることもできます。

答え3

あなたは試すことができますセッションの再接続これらのツールを使用してくださいレプテルしかし、これは常に動作するわけではありません。

いつでもそのプロセスとサブプロセスを終了できますaptdpkgすべてのキットメンテナンス作業は突然の停電に備えてください。完了するには、コマンドを再実行してください。

SIGKILL 以外の SIGINT または SIGTERM 信号を APT および dpkg に送信します。 SIGKILLはロックされたファイルをそのまま残します。これは一般的なルールです。 SIGINTが利用可能な場合は、SIGKILLを使用しないでください。

答え4

これは今後より良い仕事をするのに役立ちます。 「画面」を使うことです。

このDebianの投稿は私が深刻な問題を解決するのを助けました:

https://wiki.debian.org/Teams/Dpkg/FAQ

sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend

sudo dpkg --configure --pending

関連情報