如何强制杀死程序在访问IO时卡住(firefox)

如何强制杀死程序在访问IO时卡住(firefox)

我使用 Firefox 通过 sshfs 挂载点显示一些文件...

然而,这个挂载点碰巧断开了连接;如果我不经意地重新加载页面,Firefox 将永远卡住并且甚至不能被杀死

例如,我仍然D在这里看到带有“”的firefox进程:

$ ps aux | grep firefox
plasmab    10269  0.8  4.2 3253252 344216 ?      D    18:12   0:51 /usr/lib/firefox/firefox
plasmab    13350  0.0  0.0  21996  1148 pts/3    S+   19:50   0:00 grep --color=auto firefox

而这,甚至在之后killall -9 firefox。尝试kill -9 10269是没有用的。

现在,我跟随删除lock.parentlock文件的步骤,但之后我仍然看到“D”过程。尽管如此,我重新启动了 Firefox 并再次关闭它,这导致不需要的进程消失了......

所以删除锁定文件尽管卡住了进程,但重新启动 Firefox 仍然有效。还有更好的方法吗?

我怀疑这个问题可能更普遍。例如,我可能会被困在做一个简单的ls.如何终止此类卡住的进程?

答案1

进程D处于不间断睡眠状态。在等待结束之前,没有信号会杀死它。通常原因是 I/O 不完整。

就您而言,连接虽然丢失,但尚未关闭。要么仍有一些重试要做,要么处于 CLOSE_WAIT 状态。如果你等待足够长的时间,kill就会起作用,但只有在sshfs放弃之后。

您应该sshfs先杀死该进程,然后再杀死 Firefox,它将不再需要等待,因为底层文件系统将消失(不再sshfs)。

所以,快速修复:

  • 杀死 sshfs
  • 杀死火狐

您可能还想研究-o reconnect的选项sshfs

相关内容