2013-08-01 22 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;庆典,您可以通过任何其他修改“回声你好”。