Bash:基于其标题的地址(终止)终端?

时间:2017-07-22 10:29:37

标签: bash terminal kill

我有几个终端从" base"一个使用gnome-terminal的{​​{1}}使用PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'并执行内容。

以后可以根据它们的标题(例如执行特定的命令)或存储它们的" ID"来解决这些终端的问题。来自"母亲"终端或至少在不再需要它们时杀死它们中的某些?

关于杀戮,我至少可以假设他们在top中的号码会按照他们被打开的顺序递增但是这不是真正的防弹,因为在路上可能有另一个终端打开或即便在两者之间。

干杯!

2 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。 PROMPT_COMMAND用于在gnome-terminal下运行的bash。

您可以做的最好是使用终端的PID:

gnome-terminal &
first_teminal=$!
gnome-terminal &
second_terminal=$!

etcetera并杀死他们

kill $first_terminal

答案 1 :(得分:0)

1。使用tty显示伪设备ID

您可以在提示符中添加每个终端使用的伪终端设备的名称:

TTY=$(tty)
PROMPT_COMMAND='echo -ne "\033]0;'${TTY#/dev/}'|SOME TITLE HERE\007"'

这会添加pts/3|SOME TITLE...

之类的内容

从那里,您可以列出在此终端中执行的所有任务:

ps --tty pts/3 fw
  PID TTY      STAT   TIME COMMAND
 7528 pts/3    Ss     0:00 bash
 8769 pts/3    R+     0:00  \_ ps --tty pts/3 fw

2。使用wmctrl询问 x-window-server

您可以(如果尚未安装,也可以使用wmctlr

wmctrl -pl | grep SOME\ TITLE
0x05600024  0   7524   hstnam SOME TITLE HERE

ps --ppid 7524 ho sid
 7528

ps --sid 7528 fw
  PID TTY      STAT   TIME COMMAND
 7528 pts/3   Ss     0:00 bash
13349 pts/3   R+     0:00  \_ ps --sid 7528 fw