Firefox

如何在訪問 IO (firefox) 時強制終止程序卡住

  • May 13, 2020

我使用 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. 如何殺死這種卡住的程序?

處於狀態的程序處於D不可中斷的睡眠狀態。在它的等待結束之前,沒有信號會殺死它。通常原因是不完整的 I/O。

在您的情況下,連接雖然失去,但尚未關閉。要麼仍有一些重試要做,要麼它處於 CLOSE_WAIT 狀態。如果您等待足夠長的時間,kill將起作用,但只有在sshfs放棄之後。

您應該sshfs先終止該程序,然後再終止 firefox,這將不再需要等待,因為底層文件系統將不復存在(不再存在sshfs)。

所以,快速修復:

  • 殺死 sshfs
  • 殺死火狐

您可能還想-o reconnect研究sshfs.

引用自:https://unix.stackexchange.com/questions/586437