私はDebian 8 jessieを実行しています。
デーモンのデバッグツールを有効にして、デーモンにデバッグ情報をstdoutおよび/またはstderrに印刷させるようにしました。start-stop-daemon(8)
デーモン/lib/lsb/init-functions
のstdoutとstderrが私のデバッグログファイルにリダイレクトされるようにするにはどうすればよいですか/root/log
?
無効なようです>/root/log 2>&1
。start-stop-daemon(8)
シェルではないので、これが意味があると思います。とにかく、デーモンのstdoutとstderrをどのようにリダイレクトできますか?
[デーモンはですがexim4(8)
、私が知る限り、それは私の問題とは何の関係もありません。 LSBは明らかにデーモン管理をSystemdに委任します。これは私が知っているすべてと間接的に関連している可能性があります。 ]
答え1
さまざまな層のシェルスクリプトを介してマジックオプションを渡す試みは、システムLinuxオペレーティングシステムでは完全に間違ったアプローチです。
システムすでに以下のように、「sysv」サービスジェネレータによって自動的に生成されたサービスの標準出力/エラーを記録します。 "sysv"サービスジェネレータは、サービスを呼び出すために1つexim4.service
(下のどこか/run/systemd
)を作成しました/etc/init.d/exim4
。
委任は行われません。あなたのrc
スクリプトは当初サービスの責任を負いません。彼らは単に便利なプロキシとして実行されます。
したがって、あなたがする必要があるのは、キャプチャされたサービスログの出力を見ることですexim4.service
。これは日記であってもよいし、syslog
日記に基づく配列の変形であってもよい。
後者の場合は、syslog
変形に適したすべての作業を実行してください。前者の場合、systemctl
実行するたびにサービスの最新のログエントリが表示されます。
systemctl statusexim4.service適切な権限(スーパーユーザーまたは
systemd-journal
グループのメンバー)が必要です。最後の起動以降、サービスのログエントリを表示することもできます(ログはまだ循環していません)。Journalctl -u exim4.service -e -b
輸出入銀行は適切なサービス管理を行います。
皮肉なことに、これらすべてのモンスタースクリプトはややrc
短い+および+サービスとソケットデバイスに置き換えることができます。exim4-queue.service
[email protected]
exim4-smtp-relay.socket
[email protected]
exim4-smtp-submission.socket
また、eximは「フロントエンド」と「デバッグ」/「詳細情報」を誤って与えることに注意してください。これのオプションは-bdf
明示的に「デーモン」ではなくバージョンですが、-bd
サービス管理ツールがリスニングソケットを処理する接続固有の「ソケット有効」デーモン(追加の読み取りの例に従って)と呼んでいても、人々はとにかく代わり-bs
に使用してください-bdf
。
追加読書
- https://unix.stackexchange.com/a/233581/5132
- ジョナサンデボインポラード(2014)。実行中のスクリプトとサービスユニットを並べて表示します。。よく与えられる答えです。
- ジョナサンデボインポラード(2014)。 」「前景」が「デバッグモード」を意味すると仮定しないでください。'。 Unixデーモンを設計する際に避けるべき間違い。よく与えられる答えです。