Отправка SIGTERM в `script` приводит к созданию зомби-процесса

Отправка SIGTERM в `script` приводит к созданию зомби-процесса

Я реализую простую систему для удаленного запуска заданий через SSH. Моя цель — запустить задание в screenи записать все его выходные данные, используя scriptи загрузить скрипт на сервер, когда задание завершится. Однако я борюсь с правильной обработкой SIGTERM (например, когда удаленная машина собирается выключиться), поскольку процесс scriptне завершается при получении SIGTERM (вместо этого процесс, который выполняется внутри, scriptстановится зомби).

Предположим, что выполнена следующая команда:

script -e -q -c 'ping www.google.com'

Использование killall -TERM scriptдля отправки сигнала SIGTERM процессу, scriptпо-видимому, передает сигнал SIGTERM ping(который завершается), однако он становится процессом-зомби и scriptне завершается:

> ps -aux | grep ping
karel    16460  0.0  0.0  10852  2732 pts/2    S+   12:57   0:00 script -e -q -c ping www.google.com
karel    16461  0.1  0.0      0     0 ?        Zs   12:57   0:00 [ping] <defunct>

Если я правильно понимаю, процесс pingявляется зомби, потому что родительский scriptпроцесс все еще наблюдает за ним. Однако возможно ли сделать так, чтобы он scriptпрекратил наблюдение за процессом и изящно завершился (при этом сбрасывая typescript)?

Связанный контент