【发布时间】:2022-01-09 09:33:37
【问题描述】:
问题与带有 Cinnamon 桌面的 Linux Mint 64、20.x 系统有关
在终端上运行以下示例代码正在执行以下操作:
- 在第一个终端选项卡上输出第一个终端选项卡的 pid
- 创建第二个终端标签
- 在第二个终端选项卡上输出一件事
示例代码:
echo "pid von TAB1: $$"; gnome-terminal --title="Titel of 2nd TAB" --tab --active -- bash -c "sensors; read exec bash"
Booth 终端选项卡有自己的 pid。这可以通过以下方式看到:
ps ax | grep bash
Booth 终端选项卡可以通过他自己的 pid 关闭以进行测试:
kill 123456
如何在第一个终端选项卡上获取和输出第二个终端选项卡的 pid ?
【问题讨论】:
-
pgrep可以提供帮助,但您始终有可能找到其他终端而不是您正在寻找的终端... -
@Fravadona,没错,pgrep bash 将输出一个终端 pid 列表。因此,可以在打开新终端选项卡之前和之后获取列表。 A 在这种方式上,它不是 100% 确定获得正确的 pid。它可以通过 $$ 或 $! ?
-
您可以使用
pgrep -P来了解终端可能属于的调控器进程的子进程,但是要知道选项卡的实际进程是众多进程中的哪一个是很困难的。这个调控器进程可以是一个守护进程、一个单例服务,或者只是一个父进程。 -
@konsolebox,听起来很有趣。 A pgrep -P $$ 在第一个终端选项卡上,不要给我第二个终端选项卡的 pid 或另一个 pid。
-
$$ 是 shell 的 PID,而不是调控器进程。查看 pstree 的输出。也许你会从中找到线索。再一次,州长过程只是理论上的。