通常通り作業していたのですが、突然、あるプログラムがクラッシュしてしまいました。プログラムが応答しなくなり、ウィンドウが灰色になりました。その後、プログラムを閉じるか、応答するまで待つかというメッセージが表示されました。
プログラムを閉じることを選択しましたが、意図したとおりには動作しませんでした。Ubuntu 全体がフリーズしてしまい、何もできませんでした。
そこで、入力するとターミナルが開くことに気付きましたCtrl + Alt + t
。そして、実際にターミナルが開きました。しかし、次に何をすればいいのかわからなかった。
私の質問は次のとおりです。プログラムがフリーズした場合、ターミナルから何をすればよいですか?私の場合は nautilus でした (FTP プログラムとして使用してリモート サーバーに接続していました)。結局、 でマシンを再起動しましたsudo reboot
。
最悪だ。もっと良かったのに応答しないプログラムを閉じるにはどうすればいいでしょうか? また、応答しないプログラムの名前がわからない場合はどうすればいいでしょうか?
ご参考までに、私はこのトピックを読みました "UI要素が完全に応答しなくなる「そして、私はこれが同じケースではないと思います。なぜなら、私は通常この問題を抱えておらず、あまり一般的ではないし、メモリは正常に動作しており、マシンはかなり新しいものだからです(Intel Core i7、8 GB RAM)。
答え1
できますxkill
。この気の利いた小さなユーティリティは、次にクリックしたウィンドウを自動的に破壊します。
使用できる別のオプションは、top
または と呼ばれるものですhtop
。奇妙なプロセス、特に「ゾンビ」としてマークされているプロセスや、大量のシステム リソースを消費しているプロセスを探します。その後、Kキーを使用してそれを強制終了できます。強制終了コード 9 を使用すると、プロセスが即座に強制終了されます。
問題のあるプログラムが であるとしますnautilus
。次のいずれかの方法を使用します。
xkill
ターミナルで を使用し、Nautilus ウィンドウをクリックします。X はセッションを終了し、Nautilus がクラッシュします。ESCキーを数秒間連続して入力し、Xkill がまだ実行されていないことを確認します。killall -9 nautilus
- 実行して
top
、 を探しnautilus
、上から殺します。
一部のプロセスを強制終了するには権限を使用する必要があることに注意してくださいsudo
。
答え2
私たちが採用している端末ベースのシステムの大きな利点の 1 つは、その答えが明確に「YES」であることです。
control私が通常行うことは、 - alt-を使用してターミナル 1 (デスクトップは常にターミナル 7 にあります) に切り替えることですf1。
プログラムが何であるかがわかっている場合は、これは非常に簡単です。そのタスクのプロセス ID を見つけて、それを強制終了します。タスクはターミナル 7 で消え、これでクラッシュが修正されれば、システムは再び応答するようになります。
firefox を使用する例: firefox を起動するとプロセス ID が取得され、 でこれを表示できますps -ef | grep firefox
。firefox を検索したいものに置き換えます。
ps -ef |grep firefox
rinzwind 5046 1484 48 19:52 ? 00:00:01 /usr/lib/firefox/firefox
rinzwind 5113 4992 0 19:52 pts/4 00:00:00 grep --color=auto firefox
(grepを参照するプロセスは私のコマンドです)
ログイン名の後ろの最初の数字はプロセス ID です。Firefoxkill -9 5046
を終了します:
~$ kill -9 5046
~$ ps -ef |grep firefox
rinzwind 5148 4992 0 19:54 pts/4 00:00:00 grep --color=auto firefox
そしてデスクトップからFirefoxが消えてしまいました。
通常、問題は正しいプロセス ID を識別することです。Firefox セッションが 5 つ開いている場合、正しいセッションを取得するのは少し問題になります。その場合は、絞り込むためにさらにロジックを追加する必要があるかもしれません。
警告: 常識に従ってください。低いプロセス ID (500 未満) を強制終了することは避けてください。