Как завершить приложение, вызванное из bash-скрипта?

Я хочу вызвать какое-нибудь приложение из скрипта. Я использую приложение, которое не допускает никаких параметров в CLI, но мне нужно протестировать его на двух разных мониторах и разрешениях экрана, чтобы у меня было два разных файла конфигурации. Для вызова нужной версии я использую простой скрипт (назовите его notebook.sh):

#!/bin/sh

rm /home/user/.app/config.ini
cp /home/user/.app/config.ini.1366x768 /home/user/.app/config.ini
sleep 1
/usr/local/bin/app &

или вторая версия с измененной строкой cp.

Хорошо, все просто. Но когда я закрываю это приложение (встроенная функция Ctrl + Q), оно все равно запускается. При вызове команды ps я вижу app и notebook.sh в списке процессов.

У меня вопрос: как написать сценарий notebook.sh для завершения / уничтожения app и сценария полностью? Примерно такой кусок кода:

if [ "$1" = "start" ]; then /usr/bin/mplayer -fs -osdlevel 0 $2 ; fi
if [ "$1" = "stop" ]; then killall mplayer ; fi
0
задан 14.04.2020, 10:16

1 ответ

Я предлагаю вам более простое, но уродливое решение. : -)
Вы можете завершить процесс через некоторое время с помощью пакета под названием timelimit:

sudo apt-get install timelimit

(на терминале)

-t опция timelimit - это количество секунд, в течение которых процесс будет оставаться в живых: после этого он будет убит (жестоко) сигналом SIGKILL (если вы не указали другие сигналы с опцией -S).

timelimit OPTIONS command arguments

Редактировать: Если вы хотите использовать «профессиональное» решение, используйте trap:

trap 'kill $(jobs -p)' EXIT

. Команда будет исполнена запятыми после сигнала «ВЫХОД». [117 ]
Чтобы проверить это: trap "yes test" EXIT ... then use the exit command. Bye.

1
ответ дан 14.04.2020, 10:17

Теги

Похожие вопросы