Для тестирования у меня есть этот сценарий оболочкиTerminate выполнение команд, когда сценарий оболочки убита
#!/bin/bash
echo $$
find/>/dev/null 2>&1
Запуск этого из интерактивного терминала, Ctrl + C прекращает Баш, и команда поиска.
$ ./test-k.sh
13227
<Ctrl+C>
$ ps -ef |grep find
$
Запуск его в фоновом режиме и уничтожение оболочки приведет к сироту команд, запущенных в скрипте.
$ ./test-k.sh &
[1] 13231
13231
$ kill 13231
$ ps -ef |grep find
nos 13232 1 3 17:09 pts/5 00:00:00 find/
$
Я хочу, чтобы этот скрипт оболочки завершал все его дочерние процессы, когда он выходит, независимо от того, как он вызывается. В конце концов, это будет запущено из приложения python и java, и при выходе скрипта потребуется какая-то форма очистки - какие-либо параметры, которые я должен изучить, или каким-либо образом переписать сценарий, чтобы очистить себя при выходе?
Обычная команда no-op - '': '". – ephemient
Горячий. Теперь меняем. –
Если я запускаю процесс в фоновом режиме, он не будет убит. Если я не запустил его в фоновом режиме, порожденный дочерний процесс будет убит –