17 Stimmen

Beendet laufende Befehle, wenn das Shell-Skript beendet wird

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?

0voto

ennuikiller Punkte 44945

Sie müssen nur das Kill-Signal abfangen, den Find-Befehl beenden und das Programm beenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X