2011-09-28 71 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