現在 runit サービスの一部として、次のログ/実行スクリプトがあります。
#!/bin/sh
set -e
exec svlogd -tt ./main
""の場合、tail -f log/main/current
"live"と書かれたサービス出力は表示されません。 4K単位でのみstdoutをダンプするようです。したがって、サービス使用量が少ない場合、サービスが実際に「sv restart」を実行しない限り、最新のログデータは表示されません。この場合、サービスが再起動される前にすべてのデータがログに記録されます。
「-l」および「-b」パラメータを試してみましたが、何の効果もありませんでした(この時点ではこれが重要であるかどうかわかりません)。
ベストアンサー1
残念ながら、ログデータを作成した後に標準出力をフラッシュしないデーモンに欠陥があるようです。
svlogdはラインバッファリングのみを実行するため、完全なラインが標準入力に到着するとすぐにログファイルに出力されます。