シグナルは kill
を使用して送信できます もちろん、誰がその信号を送信しているか、端末やネットワーク接続を切断しているかを調べてみることもできますが、問題を解決するためのより簡単で実用的な方法があります。
コードがデーモンとして実行されることになっているが、実際にはそうではない場合 (あなたのものと同じように)、任意のプログラムをデーモンに変えることができるラッパーがあります。驚き - このラッパーは daemon
と呼ばれます !多くのオプションがありますが、おそらく最も重要なのは、何らかの理由でユーティリティが停止した場合にユーティリティを自動的に再起動するオプションです。
このコマンドが Ubuntu にインストールされていない場合は、sudo apt-get install daemon
だけ 、および man daemon
始めましょう。
さて、SIGHUP について注意すべき点がいくつかあります。まず、その起源はハングアップの概念、つまりモデムのようなものを介したコンソールへの接続の喪失に由来します。現代の用語では、これは通常、制御する tty を失ったことを意味します。 tty から切り離すように注意していない限り、特定の端末で開始されたプログラムは、端末が閉じられたときに SIGHUP を受け取ります。プログラムでこれを行う方法の詳細については、こちらを参照してください。その他のオプションは次のとおりです。
screen
内でプログラムを実行する またはtmux
nohup
でプログラムを実行する またはその他のデーモン化フレームワーク
もう 1 つの可能性は、何かが故意にプロセスに SIGHUP を送信しているということです。これは、「伝統」により、プロセスが構成を再読み取りする必要があることをプロセスに通知するためによく使用されます。