这是我多年来一直面临的问题,但直到现在我还没有在任何地方发布过相关信息。
我正在运行 GRML,这是一个基于 Debian squeeze 的 Linux 发行版,偶尔某些进程会失控并导致 CPU 使用率达到 100%。我通常唯一能知道的方法是当我的状态栏上的热量计变黄时。不过,有时我会在发生这种情况时运行全屏应用程序,所以有时我没有发现它,导致我的电脑浪费 CPU。
我能想到的进程有:abook、aumix、hnb、wyrd。它们都是基于 NCurses 的控制台应用程序,还有一些也是基于 NCurses 的。NCurses 中是否存在需要我修补的 bug 之类的东西?
这也发生在具有相同配置的不同笔记本电脑上的相同发行版和相同应用程序上。
有什么想法吗?谢谢!
答案1
每当发生这种情况时,尝试strace -p
pidof programname -o /tmp/wtf
,让它运行一段时间,使用 ctrl+c 停止它,然后使用以下方式读取生成的 /tmp/wtf较少的或者任何你喜欢使用的。看看进程是否在不停地重复做某事。
答案2
我终于解决了这个问题。我开始注意到它发生时的规律:在我按下 Alt+Q(相当于 Alt+F4)后,运行终端的某些基于 ncurses 的程序(如上所述),而不是“正常”关闭它们。
WMII 和 Ion3 窗口管理器都是如此,因此认为它与 WM 无关,但事实证明这是错误的。
在 WMII 中,我更改了键绑定以在以下配置行中执行“slay”而不是“kill”,并且一切正常:
wmiir xwrite /client/$1/ctl 杀戮