Zu Testzwecken habe ich dieses Shell-Skript
#!/bin/bash
echo $$
find / >/dev/null 2>&1
Wenn Sie dies von einem interaktiven Terminal aus ausführen, beendet ctrl+c die Bash und den Befehl find.
$ ./test-k.sh
13227
<Ctrl+C>
$ ps -ef |grep find
$
Wenn Sie das Skript im Hintergrund ausführen und nur die Shell beenden, werden die im Skript ausgeführten Befehle verwaist sein.
$ ./test-k.sh &
[1] 13231
13231
$ kill 13231
$ ps -ef |grep find
nos 13232 1 3 17:09 pts/5 00:00:00 find /
$
Ich möchte, dass dieses Shell-Skript alle untergeordneten Prozesse beendet, wenn es beendet wird, unabhängig davon, wie es aufgerufen wird. Es wird schließlich von einer Python und Java-Anwendung gestartet werden - und irgendeine Form der Bereinigung ist erforderlich, wenn das Skript beendet - alle Optionen, die ich in oder irgendeine Möglichkeit, das Skript umschreiben, um sich beim Beenden zu bereinigen aussehen sollte?