在/ usr / bin / gnome-terminal中发生了什么?

我注意到没有名为“ gnome-terminal ”的进程,尽管我使用的是所谓的“ gnome-terminal ”,它是通过单击桌面上菜单栏上的图标来调用的。

 $ ps -au | grep gnome cul8er 8763 0.1 0.8 554960 33268 pts/22 Sl 05:16 0:00 /usr/lib/gnome-terminal/gnome-terminal-server --app-id com.canonical.Terminal.AnAuzDeiSeoqQhlGKbPNPeHhAROwBwtP cul8er 8771 0.0 0.0 14852 1832 pts/22 S 05:16 0:00 gnome-pty-helper cul8er 8821 0.0 0.0 14656 2232 pts/23 S+ 05:27 0:00 grep --color=auto gnome 

所以我输入了gnome-terminal & 。 输出如下:

 $ gnome-terminal & [2] 8865 $ [2]+ 終了 gnome-terminal $ echo $LANG ja_JP.UTF-8 

这个结果似乎表明,当显示终端仿真器时, gnome-terminal的进程立即退出。 如果是真的,为什么我可以看到没有与之关联的进程的新终端?

所以我检查了命令gnome-terminal

 $ which gnome-terminal /usr/bin/gnome-terminal $ file /usr/bin/gnome-terminal /usr/bin/gnome-terminal: Python script, ASCII text executable 

gnome-terminal是一个python脚本。

我看着它。 我无法理解因为我不知道python ,但是我注意到/usr/lib/gnome-terminal/gnome-terminal-server --app-id ,它显示在ps的输出中,与此相关问题。 但我不知道’ subprocess ‘和’ Popen ‘是什么意思。

 subprocess.Popen(['/usr/lib/gnome-terminal/gnome-terminal-server', '--app-id', name], stdout=subprocess.DEVNULL, stdin=subprocess.DEVNULL, stderr=subprocess.DEVNULL) 

如果在运行gnome-terminal脚本时调用子进程,则在打开gnome-terminal时应运行多个进程。 但是,似乎ps的输出中只有一个进程/usr/lib/gnome-terminal/gnome-terminal-server --app-id

脚本运行时发生了什么?

代表所谓的“ gnome-terminal ”的过程在哪里?

操作系统:Ubuntu 15.04

单个进程/usr/lib/gnome-terminal/gnome-terminal-server是处理所有gnome-terminal窗口的进程。

命令gnome-terminal会激活gnome-terminal-server如果它尚未运行),或连接到现有实例并要求它打开一个新窗口。

如果每次调用命令gnome-terminal本身都会打开一个新窗口,因此每个终端窗口都由它自己独立的进程处理,那么你将无法在它们之间拖放选项卡。 这是我相信这个设计背后最重要的原因。 可能还有其他原因,我不确定。