GNU/Linux >> Linux の 問題 >  >> Linux

SIGHUP が生成される原因は何ですか?

シグナルは kill を使用して送信できます もちろん、誰がその信号を送信しているか、端末やネットワーク接続を切断しているかを調べてみることもできますが、問題を解決するためのより簡単で実用的な方法があります。

コードがデーモンとして実行されることになっているが、実際にはそうではない場合 (あなたのものと同じように)、任意のプログラムをデーモンに変えることができるラッパーがあります。驚き - このラッパーは daemon と呼ばれます !多くのオプションがありますが、おそらく最も重要なのは、何らかの理由でユーティリティが停止した場合にユーティリティを自動的に再起動するオプションです。

このコマンドが Ubuntu にインストールされていない場合は、sudo apt-get install daemon だけ 、および man daemon 始めましょう。


さて、SIGHUP について注意すべき点がいくつかあります。まず、その起源はハングアップの概念、つまりモデムのようなものを介したコンソールへの接続の喪失に由来します。現代の用語では、これは通常、制御する tty を失ったことを意味します。 tty から切り離すように注意していない限り、特定の端末で開始されたプログラムは、端末が閉じられたときに SIGHUP を受け取ります。プログラムでこれを行う方法の詳細については、こちらを参照してください。その他のオプションは次のとおりです。

  • screen 内でプログラムを実行する または tmux
  • nohup でプログラムを実行する またはその他のデーモン化フレームワーク

もう 1 つの可能性は、何かが故意にプロセスに SIGHUP を送信しているということです。これは、「伝統」により、プロセスが構成を再読み取りする必要があることをプロセスに通知するためによく使用されます。


Linux
  1. プログラムは独自の elf セクションを読み取ることができますか?

  2. dbus デーモンとは何か、vlc がそれを必要とする理由

  3. Docker コマンドが Docker デーモンに接続できない

  1. 出力が stdout か stderr かを判別する

  2. 自分のネットワークをテストできますか?

  3. ドライブを回転させているものをどのように確認できますか?

  1. Strace / ptraceはプログラムをクラッシュさせる可能性がありますか?

  2. プロセスは所有者を持つことができますか?どういう意味ですか?

  3. シグナル 11 の原因は何ですか?