什么可以导致gnome-terminal,没有--disable-factory被调用来阻止?

时间:2015-01-21 15:26:18

标签: linux shell ubuntu codeblocks gnome-terminal

我们正在从脚本运行gnome-terminal,如下所示:

gnome-terminal -t 'Program Console' -x telnet 10.1.1.50 3000

telnet命令导致命令行程序在远程计算机上运行,​​输出显示在gnome-terminal中。

当从在Ubuntu 12.04 32位上运行的Code :: Blocks IDE的10.05版本运行此脚本时,这可以正常工作:gnome-terminal命令不会阻止脚本。

然而,当它从Code :: Blocks版本13.12(在另一个安装)Ubuntu 12.04 32位运行时,它会阻塞。如果不是单击Gnome Launcher中的Code :: Blocks图标,而是从Code :: Blocks外部的gnome-terminal调用Code :: Blocks 13.12,它不会阻塞。

我想知道在没有--disable-factory的情况下调用gnome-terminal会导致什么阻塞。我们已经使用了gnome-terminal,查看了进程,组和会话ID:

ps -eo user,pid,ppid,ruid,rgid,euid,egid,suid,sgid,sess,cmd --forest

我看不出ID的任何显着差异,但我可以看到,当gnome-terminal没有阻塞时,telnet命令与Code :: Blocks位于不同的进程树中。

根据手册页,gnome-terminal联系激活名称服务器,除非使用了--disable-factory,因此Code :: Blocks 13.12可能会阻止gnome-terminal与名称服务器联系。除了对gnome-terminal手册页的引用之外,我无法在线找到有关名称服务器的任何信息。

有谁知道可能导致gnome-terminal阻止的原因?

我提到了--disable-factory,因为我们在其他地方使用了--disable-factory,这总是会导致gnome-terminal阻塞,直到它正在执行的命令完成。

这是telnet命令阻塞时ps(不重要的行被删除)的输出(Code :: Blocks版本13.12,从Gnome Launcher调用):

USER       PID  PPID  RUID  RGID  EUID  EGID  SUID  SGID  SESS CMD
1000      3413     1  1000  1000  1000  1000  1000  1000  2853 gnome-terminal
1000      3417  3413  1000  1000  1000    43  1000    43  2853  \_ gnome-pty-helper
1000      3418  3413  1000  1000  1000  1000  1000  1000  3418  \_ bash
1000      3495  3418  1000  1000  1000  1000  1000  1000  3418  |   \_ minicom
1000      3567  3413  1000  1000  1000  1000  1000  1000  3567  \_ bash
1000      5189  3413  1000  1000  1000  1000  1000  1000  5189  \_ bash
1000      8669  5189  1000  1000  1000  1000  1000  1000  5189  |   \_ gtodo
1000     16384  3413  1000  1000  1000  1000  1000  1000 16384  \_ bash
1000     18195  3413  1000  1000  1000  1000  1000  1000 18195  \_ bash
1000     20713  3413  1000  1000  1000  1000  1000  1000 20713  \_ bash
1000     23255 20713  1000  1000  1000  1000  1000  1000 20713      \_ vi gnome-terminal-query-2
1000     23492 20713  1000  1000  1000  1000  1000  1000 20713      \_ ps -eo user,pid,ppid,ruid,rgid,euid,egid,suid,sgid,sess,cmd --forest
1000     23268     1  1000  1000  1000  1000  1000  1000  2853 codeblocks
1000     23482 23268  1000  1000  1000  1000  1000  1000  2853  \_ /bin/sh ./gdb-switcher -nx -fullname -quiet -args /storage/work/c/a/s/d/telnet_run_platform.sh
1000     23483 23482  1000  1000  1000  1000  1000  1000  2853      \_ /bin/sh ./telnet_debug_platform.sh
1000     23485 23483  1000  1000  1000  1000  1000  1000  2853          \_ gnome-terminal -t Program Console -x telnet 10.1.1.50 3000
1000     23489 23485  1000  1000  1000    43  1000    43  2853              \_ gnome-pty-helper
1000     23490 23485  1000  1000  1000  1000  1000  1000 23490              \_ telnet 10.1.1.50 3000

这是我们从gnome-terminal运行代码块时的输出:

USER       PID  PPID  RUID  RGID  EUID  EGID  SUID  SGID  SESS CMD
1000      3413     1  1000  1000  1000  1000  1000  1000  2853 gnome-terminal
1000      3417  3413  1000  1000  1000    43  1000    43  2853  \_ gnome-pty-helper
1000      3418  3413  1000  1000  1000  1000  1000  1000  3418  \_ bash
1000      3495  3418  1000  1000  1000  1000  1000  1000  3418  |   \_ minicom
1000      3567  3413  1000  1000  1000  1000  1000  1000  3567  \_ bash
1000      5189  3413  1000  1000  1000  1000  1000  1000  5189  \_ bash
1000      8669  5189  1000  1000  1000  1000  1000  1000  5189  |   \_ gtodo
1000     16384  3413  1000  1000  1000  1000  1000  1000 16384  \_ bash
1000     18195  3413  1000  1000  1000  1000  1000  1000 18195  \_ bash
1000     20713  3413  1000  1000  1000  1000  1000  1000 20713  \_ bash
1000     23255 20713  1000  1000  1000  1000  1000  1000 20713  |   \_ vi gnome-terminal-query-2
1000     23936 20713  1000  1000  1000  1000  1000  1000 20713  |   \_ ps -eo user,pid,ppid,ruid,rgid,euid,egid,suid,sgid,sess,cmd --forest
1000     23686  3413  1000  1000  1000  1000  1000  1000 23686  \_ bash
1000     23748 23686  1000  1000  1000  1000  1000  1000 23686  |   \_ codeblocks
1000     23924 23748  1000  1000  1000  1000  1000  1000 23686  |       \_ /usr/local/bin/gdb -nx -fullname -quiet -args /storage/work/c/a/s/d/telnet_run_platform.sh
1000     23931  3413  1000  1000  1000  1000  1000  1000 23931  \_ telnet 10.1.1.50 3000

(我们从Code :: Blocks调用的脚本gdb-switcher继续执行gdb,因此当gnome-terminal命令没有阻塞时,这就是代码块将此进程作为子进程的原因。)

0 个答案:

没有答案