起動時に実行するために runit runer を使用しています。 runitが実行しているプログラムのすべての出力をファイルに記録したいと思います。
私は見たことがないsvlogdしかし、私はそれを実行する方法を知りません。
答え1
私はそれを動作させる方法を知りません。
daemontoolsシリーズの世界では、ログサービスは他のサービスと同じです。したがって、「基本」サービスを実行するプログラムと同様に、プログラムをsvlogd
実行します。run
run
「ログ」サービスは、次の点でのみ特別です。
- 「ログ」サービスディレクトリは、「プライマリ」サービスディレクトリ(または直下のサブディレクトリ)のシンボリックリンクを使用して配置されます。
- 一部(すべてではありません)daemontoolsツールセットスイートは、「ログ」および「基本」サービスを緊密にバインドし、両方のサービスを単一のユニットとして機能します。ある程度は runit の場合です。
それ以外の場合は、他のすべてと同じです。
svlogd
したがって、他のサービスを作成するのと同じように、実行する「ログ」サービスを作成し、「デフォルト」サービスに基づいて正しい場所に配置してから開始します。
追加読書
- ジョナサンデボインポラード(2015)。「記録」。 デーモンツールシリーズ。一般的な答え。
- ゲレットパフ。「追加ログサービスを使用して新しいサービスカタログを作成するにはどうすればよいですか?」。ランイットFAQ。
- ダニエルJ.バーンスタイン。 「ログを含むサービスカタログをどのように作成しますか?」。デーモントゥルズのよくある質問。
答え2
最初にすべきことは、システム上の runit ファイルがどこにあるかを調べることです。通常、各サービスに対して1つの/etc/runit/
ディレクトリが作成されたディレクトリを見つけることができます。sv
という新しいサービスを作成するとしますfood
。food
という名前のディレクトリを作成します/etc/runit/sv/
。
# mkdir /etc/runit/sv/food
からrun
スクリプトを作成します/etc/runit/sv/food
。サービスプログラムがにある実行可能ファイルであるとします/opt/bin/foo
。この場合、run
スクリプトは次のようになります。
#!/bin/sh
exec /opt/bin/foo 2>&1
ログを記録するには、名前/etc/runit/sv/food
付きディレクトリ内に別のディレクトリを作成する必要がありますlog
。run
その中に別のスクリプトがあります。
#!/bin/sh
exec svlogd -tt <logs-directory>
輸出を保証します<logs-directory>
。そして両方のスクリプトを実行可能にすることを忘れないでくださいrun
。
# chmod +x /etc/runit/sv/food/run
# chmod +x /etc/runit/sv/food/log/run
food
内部ディレクトリへのシンボリックリンクを作成します。/etc/runit/runsvdir/default
# ln -s /etc/runit/sv/food /etc/runit/runsvdir/default/
サービスを手動で開始/停止するには、次の手順を実行します。
# sv start food
# sv stop food
これをつかむクイックスタートガイド詳細については。
ガイドとは異なりchpst
。この場合、food
サービスはroot
。chpst
特定のユーザーでサービスを実行するには、ガイドの推奨事項に従ってください。