注销时 Firefox 未正确关闭

sin*_*ata 10 session firefox shutdown restart logout

我刚刚安装Ubuntu 14.04 beta2了 25 次尝试退出、关闭或重新启动,Firefox退出时我的会话没有正确关闭23 次。结果是 Firefox 选项卡恢复页面,如果我事先花时间手动关闭 Firefox,则永远不会发生。

由于它工作了 2/25 次,感觉像是一个时间问题,Ubuntu 不允许 Firefox 的处理时间结束(Ubuntu 在大约 1-2 秒内注销)。我什至从未收到过“等待 Firefox?/仍然关闭?” 我在 12.04 下观察到的对话框。

所以如果我是对的,我该如何让它等待?如果不是问题是什么,我该如何解决不正确的退出?

我没有管理配置文件或会话配置文件的经验,也很少使用 bash(我理解它,但在编码方面很糟糕)。因此,如果您无法回答但有一篇关于配置文件/会话如何在 Unix/Linux/Debian/Ubuntu 中工作(如果相同)和/或如何更改登录/注销事件的好文章,我会对此感到高兴。

编辑:我做了额外的测试,进一步表明这是一个时间问题

  • wmctrl -c firefox; sleep 0.5; sudo shutdown now -r 工作正常 100%
  • wmctrl -c firefox; sleep 0.2; sudo shutdown now -r 工作正常 50%
  • wmctrl -c firefox; sudo shutdown now -r 工作正常 10%
  • sudo shutdown now -r& wmctrl -c firefox 似乎从来没有工作...

因此,作为一种解决方法,我如何写入wmctrl -c firefox; sleep 0.5类似于.profilebash_logout但用于会话注销的文件?

sin*_*ata 1

显然,没有像以前那样可以写入的专用文件。它是/etc/gdm/PostSession在 Gnome 下,但由于显然是 Unity 而不可用。将脚本放在/etc/rc0.d/和下/etc/rc6.d/将不起作用,因为它们仅在 Xserver 关闭后执行。

gnome-save-yourself然而,当 gnome 被要求注销时,会发生一个称为“fired”的事件。I 是gedit例如将隐式调用的。Seamus Phelan 制作了一个 python 脚本来监听事件并在捕获时运行脚本。

这是解决方案的链接:用户注销时执行脚本(非 root 用户)

按照说明进行操作,然后您所要做的就是放置如下所示的脚本:

#! /bin/sh
#Requires wmctrl
wmctrl -c firefox;
gmusicbrowser -cmd "Quit";
exit 0;
Run Code Online (Sandbox Code Playgroud)

其中该选项会像 gMusicBroswer 一样-c 轻轻关闭 Firefox -cmd "Quit"。Firefox 和 gMusicBrowser 都需要正确关闭,但它们却没有。

一个可能更好的方法是检查SIGTERM,SIGKILLkill timeout在 Ubuntu 和程序中的使用,但我对此了解不够。