デーモンプロセスを作成した後に孤立するコマンドラインユーティリティがあります。ターミナルエミュレータでデーモンプロセスを終了するにはどうすればよいですか?
ベストアンサー1
プロセスがデーモンになってSIGHUPを無視すると(または独自のセッションリーダーになり、自分のプロセスグループに属する可能性が高くなります)。送るSIGHUP)、端末エミュレータが閉じたときに終了する唯一の方法は、対応するPIDを記録し、致命的な信号を送信することです。
# pid=$(</var/run/some-daemon.pid)
# trap "kill $pid" EXIT
これはbashまたは互換性のあるシェルを使用すると仮定します。デーモンのPIDを取得する方法はさまざまですが、ほとんどのデーモンはPIDをファイルに書き込みます。本当の魔法はtrap
命令である。
thrigが指摘したように、このテクニックはデーモンがPIDファイルに書き込み、ユーザーが通常(exit
、^ Dなどを使用して)シェルを終了すると仮定します。この技術は脆弱ですが、簡単です。