Как мне создать сценарий «stop» в bash, который закрывает вкладки gnome-терминала, которые я ранее открывал с помощью другого bash-скрипта?

#linux #bash #unix #tabs #gnome-terminal

#linux #bash #unix #вкладки #gnome-terminal

Вопрос:

У меня есть скрипт с именем start.sh:

 #!/bin/bash

gnome-terminal --tab -- bash -c "./application1; bash"
gnome-terminal --tab -- bash -c "./application2; bash"
gnome-terminal --tab -- bash -c "./application3; bash"
 

Этот скрипт открывает три новые вкладки в текущем окне терминала и запускает уникальное приложение в каждой из них.

Теперь я хочу написать stop.sh , который остановит три прикладных процесса, а затем закроет три вкладки, на которых они были запущены. Итак, первые три команды в скрипте, вероятно, будут:

 pkill -9 application1
pkill -9 application2
pkill -9 application3
 

Но как мне затем закрыть вкладки gnome-терминала, которые я ранее открыл в другом скрипте?

Комментарии:

1. Вам следует искать решение, отличное от pkill -9 ... остановки приложений.

Ответ №1:

Каждое приложение имеет a bash в качестве родительского процесса, поэтому вы также должны убить родительский процесс.

Вы можете найти родительский элемент с ps помощью command:

 APP1PID=`pgrep application1`
APP1PPID=`ps j $APP1PID | awk 'NR>1 {print $1}'`
kill -9 $APP1PPID
 

Достаточно убить родительский процесс, он также убьет всех дочерних процессов.