2017-02-13 4 views
0

Мотивации:Linux - процесс по уходу за детьми, чтобы выжить родительский процесс дерева убить

В программе Java, я устанавливаю Баш скрипт, который будет выполнен на -XX:OnOutOfMemoryError. Этот скрипт отвечает за загрузку кучи памяти в HDFS. Однако довольно часто загружается только часть файла.

Я подозреваю, что JVM убивается менеджером кластера до завершения сценария загрузки. Я предполагаю, что JVM получает сообщение об ошибке группы процессов и берет сценарий bash, то есть его дочерний процесс, тоже.

Вопрос:

Есть ли способ в UNIX для запуска суб-процесс таким образом, что она не умирает, когда это родитель получает сигнал убить группу?

+0

Вы могли бы ловушкой сигналы, посмотрите на это: [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

ответ

1

Вы можете использовать disown. Запустите процесс в фоновом режиме, а затем отмените его, и любые сигналы об утечке родительскому процессу больше не будут переданы потомку.

Сценарий будет выглядеть примерно так:

./handler_script & 
disown 
Смежные вопросы