我使用 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
。