我发出以下命令来终止我的 Red Hat Linux 机器上的 Firefox:
[subhrcho@slc04lyo ~]$ pkill -9 -f firefox
[subhrcho@slc04lyo ~]$
但是,当我尝试通过应用程序 -> Internet -> Firefox 调用 Firefox 时,它显示:
Firefox 已在运行,但没有响应。要打开新窗口,您必须首先关闭现有的 Firefox 进程,或重新启动系统。
答案1
你的火狐已经死了。由于误导性错误消息 (*),您认为它仍在运行。这很可能是先前的结果kill -9
。
kill -9
如果不是绝对必要,请勿使用。大多数时候这并不是绝对必要的。
这就是我认为在你的案例中发生的情况:
- 火狐浏览器正在运行。
- 你做到了
pkill -9 -f firefox
。火狐浏览器被杀了即刻(**)。因此,它没有机会从配置文件目录中删除其锁定文件。 - 您启动一个新的 Firefox 进程。
- 新的 firefox 进程看到锁定文件仍在配置文件目录中,并认为另一个 firefox 进程仍在运行。然后它拒绝以误导性错误消息启动。
- 您对错误消息感到困惑,并认为 Firefox 之前没有被杀死。
- 您一直试图杀死 Firefox,但没有效果,因为没有 Firefox 进程在运行。同时,您不断收到相同的误导性错误消息,因为锁定文件仍然存在。
如果您确定 Firefox 已被终止(使用 进行检查pgrep -fl firefox
),您可以手动从配置文件目录中删除锁定文件。有关更多信息,请参阅这篇 mozillazine 文章:http://kb.mozillazine.org/Profile_in_use。
(*) 该错误消息具有误导性,因为它表示另一个进程正在运行,尽管它实际上并未检查另一个进程。它只是检查锁定文件。所以错误消息只是锁定文件的一个指示符。不一定用于另一个进程。
(**) 立即被杀死,而不是在自行终止之前给予清理的机会。虽然立即被杀死是后果的预期效果kill -9
通常既不是用户预期的也不是用户预期的。
请继续阅读以获取有关此内容的更多详细说明。
背景资料:
Firefox 在配置文件目录中维护锁定文件。锁定文件的作用是防止两个 Firefox 实例同时访问同一个配置文件。
如果您启动 Firefox,它会首先检查锁定文件。如果没有锁定文件,那么 Firefox 将放置它自己的锁定文件并正常启动。如果已经有锁定文件,那么 Firefox 将假定该配置文件已被另一个 Firefox 实例使用,并显示一条误导性的错误消息,表明已经有一个实例在运行。
误导性的,因为 Firefox 只检查锁定文件。它不会检查是否有实际的 Firefox 进程在运行。有时没有其他 Firefox 实例在运行。只剩下锁文件了。
如果您正常关闭 Firefox(鼠标单击关闭按钮或alt+f4
),它不会立即终止。相反,它将启动“关闭例程”。其中包括删除锁定文件。如果您观察进程(例如使用top
),您会发现 Firefox 不会立即从进程列表中消失。
如果你kill
使用 Firefox(没有-9
),它不会“杀死”Firefox。相反,它发送一个信号。名为终止的信号SIGTERM
;通常被理解为“立即关闭”的信号。收到信号后,Firefox 将启动上述关闭例程。
如果您按下ctrl+c
终端(Firefox 从同一终端运行),它也会发送一个信号。这次是SIGINT
为了中断。这在语义上与SIGTERM
大多数最终用户程序相同。 Firefox 将启动关闭例程。
(旁注:程序不需要在收到这些信号后关闭。有些程序会执行一些特定的工作,然后继续运行。但这在最终用户程序中并不常见)
kill -9
是不同的。如果你的kill -9
火狐浏览器收不到信号。它不会启动关闭例程。相反,它就不再存在了。当场。中步。磁盘上未写入的任何内容都将丢失。相反,磁盘上的任何内容都将保留在磁盘上。锁定文件将保留在磁盘上。
火狐浏览器,被杀了即刻,kill -9
没有机会启动关闭例程,因此无法删除锁定文件。然后,当您再次启动 Firefox 时,它将看到锁定文件,并且会拒绝启动并显示误导性的错误消息。
这就是为什么如果不是绝对必要的话就不应该使用kill -9
,而且大多数时候也不是绝对必要的。
有关为什么不kill -9
阅读此问题和答案(以及评论)的更多讨论:我什么时候不应该杀死-9进程?。
答案2
据我所知,firefox在执行时会创建一个名为 in 的文件lock
或类似的 文件。~/.mozilla/firefox/<your_profile>/
我不知道确切的行为,但有时它会阻碍您运行 Firefox 的第二个实例,或者,如果在关闭 Firefox 后未删除它,则根本无法运行单个实例。尝试删除该文件,应该会有所帮助。
答案3
根据我自己的经验,Firefox 有时可能需要一分钟(甚至更长时间)才能最终完全关闭,如系统监视器所示。我不了解 Red Hat,但是如果您有系统监视器,您可以尝试使用它来查看 Firefox 是否仍在运行,如果它再次运行,请发出终止命令。应该可以做到这一点。
答案4
尝试kill -9 `pidof firefox`
并等待几秒钟。