2013-08-01 19 views
0

以下簡單的命令應該表現出我的問題後開放:的gnome-terminal CMD留下流程關閉父窗口

gnome-terminal --tab -t "Tab 1" -e "/bin/bash" --tab -t "Tab 2" -e "/bin/bash" 

這將打開帶有兩個標籤和有源bash shell的一個新窗口。如果我立即使用GUI [x]關閉這個新窗口,然後執行ps命令,則一個(在本例中)子進程(/ bin/bash)將保持打開狀態。我發現,這對應於在某個時間點從未被激活的所有非活動標籤(通過點擊它們)。因此,如果我們製作了類似於上述示例的新命令,但有5個選項卡而不是2個,並且在運行命令後立即關閉了此窗口,則4個子進程將保持運行。這是特殊的部分......如果你點擊每個選項卡使其處於活動狀態,然後關閉窗口,所有子過程都將被殺死,正如人們所期望的那樣。

這是gnome-terminal中的錯誤嗎?

如何確保這些流程已關閉並且不會打開?

+0

unix.stackexchange.com會更適合這個 – Barmar

+0

子進程是什麼狀態?他們是殭屍嗎?無論哪種方式,這聽起來像一個在GNOME終端的錯誤。 – Barmar

+0

我不認爲他們是殭屍。我必須承認 - 當談到ps命令和unix時,我有點新手。我在STAT列中看不到'Z'。看來,進程(ES)的父進程ID保持打開狀態是執行上述命令的終端的PID。我希望關閉新生成的窗口足以殺死每個選項卡對應的子進程(不管是否已被激活),而不必終止原始源終端。希望這是有道理的。 – Joe

回答

0

運行象下面這樣:

gnome-terminal --tab -t "Tab 1" -e "bash -ic 'echo Hello; exec bash'" --tab -t "Tab 2" -e "bash -ic 'echo Hello; exec bash'" 

你需要運行之前的一些COMAND;慶典,您可以通過任何其他修改「回聲你好」。