当程序冻结并且 Ubuntu 没有响应时,我可以从终端做些什么?

当程序冻结并且 Ubuntu 没有响应时,我可以从终端做些什么?

我正在正常工作,突然一个程序崩溃了:它没有响应,窗口变灰。之后确实出现了这条消息,询问该怎么做:关闭程序或等待它响应。

我选择关闭该程序,但它没有按预期工作:整个 ubuntu 都冻结了,我什么也做不了。

然后我意识到输入Ctrl + Alt + t我可以打开终端,而且它确实起作用了:它打开了终端。但我不知道下一步该做什么

我的问题是:如果程序冻结了,从终端该怎么办?在我的例子中,它是 nautilus(我正在连接到远程服务器,使用它作为 FTP 程序)并且我最终用 重新启动了机器sudo reboot

太糟糕了。本来会好得多关闭无响应的程序,但我该怎么做呢?如果我不知道无响应的程序的名称怎么办?

供参考,我已阅读此主题”UI 元素变得完全无响应“我不认为这里的情况是一样的,因为我通常不会遇到这个问题,这有点不常见,而且内存工作正常,而且机器是相当新的(英特尔酷睿 i7、8 GB 内存)。

答案1

您可以这样做xkill。这个漂亮的小工具会自动选中您单击的下一个窗口。

您可以使用的另一个选项是tophtop。查找奇怪的进程,尤其是标记为“僵尸”或占用大量系统资源的进程。然后您可以使用 键将其终止K。使用终止代码 9,因为这会导致立即强制终止进程。

假设坏程序是nautilus。使用下列方法之一:

  1. 在终端中使用xkill并单击 Nautilus 窗口。X 将终止其会话,导致 Nautilus 崩溃。连续发送密钥ESC几秒钟以确保 Xkill 仍未运行。
  2. killall -9 nautilus
  3. 运行top,寻找nautilus,然后从顶部杀死它。

请注意,您可能需要使用sudo权限来终止某些进程。

答案2

我们拥有的基于终端的系统的一大优势是答案是肯定的。

control我通常会使用- alt-切换到终端 1(您的桌面始终在终端 7)f1

如果您知道该程序是什么,这将非常简单:找到该任务的进程 ID 并将其终止。该任务将在终端 7 上消失,如果此操作解决了崩溃问题,您的系统将再次响应。

使用 Firefox 的示例:启动 Firefox 时,它会获取一个进程 ID,您可以使用 查看这些 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。kill -9 5046将杀死firefox:

~$ kill -9 5046
~$ ps -ef |grep firefox
rinzwind  5148  4992  0 19:54 pts/4    00:00:00 grep --color=auto firefox

我的桌面上的 Firefox 消失了。

问题通常是识别正确的进程 ID:当您打开 5 个 Firefox 会话时...获取正确的进程 ID 会有点困难。然后您可能需要添加更多逻辑来缩小范围。


警告:使用常识。应避免终止较低的进程 ID(低于 500)。

相关内容