`script` に SIGTERM を送信するとゾンビプロセスが発生します

`script` に SIGTERM を送信するとゾンビプロセスが発生します

私は SSH 経由でリモートでジョブを実行するためのシンプルなシステムを実装しています。私の目標は、ジョブを 内で実行しscreen、そのすべての出力を記録しscript、ジョブが終了したときに TypeScript をサーバーにアップロードすることです。ただし、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プロセスは親プロセスがまだ監視しているためゾンビです。ただし、プロセスの監視を停止し、(TypeScript をフラッシュしながら)正常に終了するscriptことは可能ですか?script

関連情報