2011-09-28 73 views
4

当xfce会话停止时是否可以运行脚本/命令?如何在xfce会话结束时执行脚本

+0

你可以试试这个:http://stackoverflow.com/questions/5033354/run-script-before-bash-exits – maialithar

+0

我看到这个问题也是如此,但它会把我要发布的任何脚本称为“脚本”。 事实上,如果xfce会话是一个脚本,我可以做到这一点,但它是一个编译的程序 –

回答

2

使用运行原始xfce4-session的shell脚本和如果xfce4-session完成的注销脚本来更改/usr/bin/xfce4-session可执行文件。

# mv /usr/bin/xfce4-session /usr/bin/xfce4-session.orig 

/usr/bin/xfce4-session文件:

#!/bin/bash 
/usr/bin/xfce4-session.orig 
echo "my logout script" > /tmp/testfile 

不要忘记设置执行权限:

# chmod a+x /usr/bin/xfce4-session 

(测试Debian的挤压。)

+1

我接受了答案,因为这是一个好主意,但是我会优先考虑一个不影响分发二进制文件的解决方案。 –

+2

请参阅http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - 您可以将包装脚本放在/ usr/local/bin或另一个位于dir前面的目录,其中xfce4-session已安装,并且不会更改/ usr/bin/X11/xfce4-session。这不是完美的(取决于PATH的顺序),但可能更美味 – djb

+0

我加了这个建议的答案;谢谢@palacsint – djb

0

我验证了回答以上问题,因为它不涉及新的代码编写。 然而,我发现了另一种方式来进行:创建一个X11程序,它将在会话启动时启动:它可以在X会话关闭时执行自定义脚本

注意:缺点是使用的脚本无法连接到X所以这个解决方案可能会根据需要,太晚执行脚本。

+0

启动脚本如何处理会话结束的情况?即它是否必须捕获信号,对X事件做出响应? – djb

+0

当真正的xfce会话结束时,它可以做它想做的事情:你的脚本必须启动它,然后阻塞,直到它终止为止 –

3

http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - 在那里,埃里克哈比希特建议创造/usr/local/bin/xfce4-session一个包装脚本(或先于其中xfce4-session安装,/usr/binPATH的目录另一个目录)。这样,您不必更改/usr/bin/X11/xfce4-session,因此可以独立更新。

#!/bin/bash 
# Add your own pre-session logic here 
/usr/bin/xfce4-session 
# Add your own logout logic here 

然后

$ chmod +x /usr/local/bin/xfce4-session 

它并不完美(取决于PATH顺序),但可能会更可口。

注:我提拔我的评论一个答案

+0

最后是xfce注销挂钩的解决方案,非常感谢! ...也许再次添加提示“chmod a + x/usr/local/bin/xfce4-session”..错过它给我带来了一些麻烦。我将打开一个xfce错误/功能请求来自动触发一个简单的〜/。退出 – Alex

+0

剩下的一个问题:看起来解决方案只有在明确地注销完成后才起作用。如果我直接关闭了我的系统,则不会执行.logout脚本。 (发行版:Debian Jessie) – Alex

+0

谢谢,我加了chmod – djb