Linux Mint环境下如何在首个终端标签页获取输出第二个标签页PID
Linux Mint 20.x Cinnamon 环境下获取第二个终端标签页PID的方案
核心逻辑
gnome-terminal 启动后会fork出子进程承载终端标签页,自身父进程会立即退出,无法直接通过$!捕获标签页对应的bash PID,因此采用临时文件中转的方案:第二个标签页的bash进程启动后主动写入自身PID到临时文件,第一个标签页读取该文件即可得到目标PID。
完整实现命令
在第一个终端标签页直接执行以下命令即可:
# 输出第一个标签页的PID echo "pid von TAB1: $$" # 新建第二个标签页,写入自身PID到临时文件后执行指定命令 gnome-terminal --title="Titel of 2nd TAB" --tab --active -- bash -c 'echo $$ > /tmp/second_tab_pid; sensors; exec bash' # 等待文件写入完成后读取第二个标签页PID sleep 1 TAB2_PID=$(cat /tmp/second_tab_pid) echo "pid von TAB2: ${TAB2_PID}"
验证与测试
- 核对两个标签页PID是否匹配:执行
ps ax | grep bash查看当前运行的所有bash进程 - 测试通过PID关闭指定标签页:执行
kill ${TAB2_PID}即可直接关闭第二个终端标签页
注意事项
- 命令中
bash -c后必须使用单引号包裹内部命令,否则$$会被第一个标签页的shell提前解析,写入错误的PID - 若系统响应较慢出现读取PID为空的情况,可将
sleep 1调整为sleep 2延长等待时间 - 临时文件
/tmp/second_tab_pid会被后续执行的命令自动覆盖,且系统重启后/tmp目录会自动清空,无需手动清理
内容的提问来源于stack exchange,提问作者Alfred.37
相关产品推荐
相关产品推荐

