Dla celów testowych mam ten skryptTerminate uruchomione polecenia, gdy skrypt zostanie zabity
#!/bin/bash
echo $$
find/>/dev/null 2>&1
Running to z interaktywnym terminalu, Ctrl + C wygaśnie bash i polecenia find.
$ ./test-k.sh
13227
<Ctrl+C>
$ ps -ef |grep find
$
Uruchomienie go w tle i zabicie powłoki spowoduje osierocenie poleceń uruchomionych w skrypcie.
$ ./test-k.sh &
[1] 13231
13231
$ kill 13231
$ ps -ef |grep find
nos 13232 1 3 17:09 pts/5 00:00:00 find/
$
Chcę, aby ten skrypt powłoki zakończył wszystkie procesy potomne, gdy kończy działanie, niezależnie od sposobu wywołania. Zostanie on ostatecznie uruchomiony z aplikacji python i java - a po zakończeniu działania skryptu potrzebna jest pewna forma czyszczenia - wszelkie opcje, które powinienem rozważyć lub w jakikolwiek sposób przepisać skrypt, aby oczyścić się przy wyjściu?
Konwencjonalne polecenie "no-op" to "': "". – ephemient
Hot. Zmieniam to teraz. –
Jeśli uruchomię proces w tle, to nie zostanie on zabity. Jeśli nie uruchomię go w tle, proces potomny zostanie zabity –