推进策略以中断已经“挂起”并使X桌面无响应的Linux应用程序

当应用程序(thunderbird)出现问题时,有时它会进入无响应状态,它阻止了UI,阻止了登录进程(在tty终端),并且还阻止了使用Ctrl-Alt-Backspace重新启动X会话.

通常在* nix框上,向进程发送信号足以让我获得足够的访问权以重新获得控制权,但是在这种情况下,所有内容都被禁止,即使它只是使用大量RAM和交换的单个应用程序.

使用Ctrl-Alt-F1给了我一个控制台和登录提示,我可以输入root用户名,但它不会返回密码提示,所以我被卡住了.

Ctrl-Alt-Backspace导致重新启动X会话,但它没有给我一个登录提示,并且需要一个电源循环.

有没有办法将键击绑定到某种低级“中断函数”(我的意思是在一般意义上)暂停令人讨厌的挂起进程,这样我就能看到它使用strace尝试做什么?

我隐约意识到一些被阻止的进程在它们返回之前不能被挂起,但是在这种情况下没有迹象表明阻止进程被阻止访问任何IO资源,它似乎只是做了一些愚蠢的事情.

我原本想要一些bash脚本来实现离线并将与雷鸟相关的任何进程重新设置为最低优先级,但我想如果事情和它们看起来一样糟糕,那么新进程将无法进入CPU.

我想使用Ctrl-Break键,因为它在我的机器上的桌面会话期间不用于任何其他内容.

基本上,桌面(缓慢)响应键和鼠标,因此有一些范围可以运行命令以导致坏进程暂停,我只是不知道在这种情况下可用的命令类型.

解决方法:

我的猜测是Thunderbird消耗了大量内存.如果你可以得到一个shell / console而不仅仅是杀死进程.通常,如果您正在重建搜索索引或在缓存中加载数千封电子邮件,则thunderbird将挂起.

您还可以在/ proc中设置linux oom杀手的优先级,以便SIGTERM的第一件事.

让我们首先找到雷鸟的过程.
(使用你喜欢的东西:pgrep,ps -ef | grep ……等)

bash$pidof thunderbird
1439

现在暂时停止这个过程,你就好了,停止进程:)

bash$kill -s SIGSTOP 1439
bash$strace ... 

一旦你开心,你就可以继续这个过程,并继续发出“继续”信号.

上一篇:vscode常用插件


下一篇:linux – 在PC上确定X.org的键码分配