
有沒有辦法從終端機(不是視窗管理器(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 應用程式時必須明確設定它。