#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
Достаточно убить родительский процесс, он также убьет всех дочерних процессов.