3
シェルスクリプトをデーモンとして実行する「適切な」方法
daemontoolsやdaemonizeなどの外部ツールを使用せずに、起動時にデーモンとして実行したいシェルスクリプトを書いています。 Linux Daemon Writing HOWTO Linux Daemon Writing HOWTOによると、適切なデーモンには次の特性があります。 親プロセスからの分岐 クローズすべてのファイル記述子を(すなわち、stdin、stdout、stderr) 書き込み用のログを開きます(設定されている場合) 作業ディレクトリを永続的なものに変更します(通常/) ファイルモードマスク(umask)をリセットします 一意のセッションID(SID)を作成します デーモン化入門 デーモン化導入はまた、典型的なデーモンを述べ、さらに行きます: 制御端末(存在する場合)との関連付けを解除し、すべての端末信号を無視します プロセスグループとの関連付けを解除します ハンドル SIGCLD どのように私はこのすべてを行うだろうsh、dashまたはbash唯一の共通のLinuxツールとスクリプト? Debianは主な焦点ですが、スクリプトは追加のソフトウェアなしでできるだけ多くのディストリビューションで実行できるはずです。 注:またはの使用を推奨するStackExchangeネットワーク上の答えがたくさんあることは知っていますが、これらの方法はいずれも上記の要件のすべてに対応していません。nohupsetsid EDIT:デーモン(7)のmanページには、古いスタイルのいくつかの違いがあるように見えるが、また、いくつかのポインタを与えるSysVデーモンと新しいsystemdもの。さまざまなディストリビューションとの互換性が重要なので、答えが違いを明確にするようにしてください。