在視窗管理器中啟動程式

在視窗管理器中啟動程式

有沒有辦法從終端機(不是視窗管理器(pe XFCE)的「子項目」)啟動程式到視窗管理器?

執行的程式必須與終端(以及我目前與伺服器的連接)分離,以便它在終端會話關閉後保持活動狀態。

一個例子是,透過 ssh(沒有 x-forward 或類似的)連接到伺服器,啟動瀏覽器,關閉連線。坐在伺服器前面,使用最近打開的瀏覽器,瀏覽器仍在運行。與新的「擁有者」視窗管理器脫離我的 ssh 會話。

答案1

將進程與 shell 分離的常用方法是:

  • 使用在背景運行&,然後使用以下命令讓 shell 停止追蹤它disown

    $ xterm &
    $ disown
    

    (或xterm & disown

  • 使用 在背景運行&,並使用該nohup工具防止其被殺死:

    $ nohup xterm &
    
  • 使用 在背景運行&,並使用 double-fork 來防止 shell 追蹤它:

    $ (xterm &)
    
  • 使用以下命令在背景運行setsid

    $ setsid xterm
    

(setsid xterm &)如果某些選項不起作用,請嘗試。)

答案2

xterm -e "bash -c \"./script.sh; exec bash\"" &

其中./script.sh可以只是一個指令。

答案3

使用 SSH 登入執行 X 伺服器的電腦並執行:

DISPLAY=:0 xterm &

您的 X 顯示器上應該會出現一個 xterm,並且即使您關閉 SSH 會話,它也應該保持開啟。

X11應用程式使用DISPLAY環境變數來尋找X伺服器;典型值為:0,這表示 X11 應用程式應透過 Unix 網域套接字連接到本機 X 伺服器/tmp/X11-unix/X0

從 X 會話內啟動的應用程式會繼承DISPLAY指向 X 伺服器的環境變量,但在 X 會話外部啟動的進程(例如 SSH 登入)不會具有該變數。這就是為什麼在從 SSH 登入啟動 X11 應用程式時必須明確設定它。

相關內容