【问题标题】:How to get and output a pid of a 2nd terminal tab on 1st terminal tab?如何在第一个终端选项卡上获取和输出第二个终端选项卡的 pid?
【发布时间】: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 的输出。也许你会从中找到线索。再一次,州长过程只是理论上的。

标签: linux bash terminal pid


【解决方案1】:

部分解决方案如下:

  • 第一个终端选项卡上的输出,所有 bash 相关的 pid 在打开第二个终端选项卡之前
  • 从第一个终端选项卡上的第一个终端选项卡输出真正的pid
  • 从第二个终端选项卡上的第二个终端选项卡输出真正的pid
  • 第一个终端选项卡上的输出,所有 bash 相关的 pid,打开第二个终端选项卡后
prep bash; echo "pid von TAB1: $$"; gnome-terminal --title="Titel of 2nd TAB" --tab --active -- bash -c 'echo $$ & sensors; read exec bash'; pgrep bash

此部分解决方案解决以下问题:

  • 无法在第一个终端选项卡上输出第二个终端选项卡的pid

【讨论】:

    【解决方案2】:

    部分解决方案如下:

    • 在打开第二个 bash 选项卡之前,在第一个 bash 选项卡上输出与 bash 相关的 pid 列表
    • 在打开第二个 bash 选项卡后,在第一个 bash 选项卡上输出与 bash 相关的 pid 列表

    在打开第二个选项卡之前回显 bash 选项卡列表; pgrep 重击; gnome-terminal --title="第二个标签的标题" --tab --active -- bash -c "sensors; read exec bash"; bash 选项卡的回显列表,包括。第二个 bash 选项卡; pgrep bash

    此部分解决方案无法解决以下问题:

    • 如何获取输出,第二个 pid 输出上的 pid,而不是第一个 pid 输出上的 pid

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      相关资源
      最近更新 更多