2017-02-13 5 views
0

Motivation, um zu überleben:Linux Child Prozess übergeordneter Prozess Baum tötet

In einem Java-Programm, ich bin ein Bash-Skript Einstellung auf -XX:OnOutOfMemoryError ausgeführt werden. Dieses Skript ist verantwortlich für das Hochladen des Heap-Dumps in HDFS. Häufig wird jedoch nur ein Teil der Datei hochgeladen.

Ich vermute, dass die JVM vom Cluster-Manager getötet wird, bevor das Upload-Skript abgeschlossen ist. Meine Vermutung ist, dass die JVM ein Prozessgruppen-Kill-Signal empfängt und das Bash-Skript, d. H. Ihren Kindprozess, ebenfalls herunterzieht.

Die Frage:

Gibt es eine Möglichkeit in Unix einen Teilprozess so ausgeführt, dass sie sterben nicht, wenn es Eltern Signal einer Gruppe Kill erhalten?

+0

Sie könnten die Signale Falle, haben einen Blick auf diese: [http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html ] (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html) – redxef

Antwort

1

Sie können disown verwenden. Starten Sie den Prozess im Hintergrund und verleugnen Sie ihn dann. Kill-Signale an den übergeordneten Prozess werden nicht mehr an den untergeordneten Knoten weitergegeben.

Script würde in etwa so aussehen:

./handler_script & 
disown 
Verwandte Themen