systemd は標準出力ファイルへの書き込みを停止します。

systemd は標準出力ファイルへの書き込みを停止します。

systemdUbuntu 20.04には、以下を指定した簡単なサービスがあります。StandardOutput=file:/var/log/appname/console.log

サービスを初めて起動すると、ファイルが生成され、ファイルにアプリケーションの出力が表示されます。ただし、ファイルは一度だけ記録されます。サービスを再起動すると、アプリケーションが実行されていてもファイルに何も書き込まれません。ファイルを削除してサービスを再起動すると、ファイルが再び表示され、もう一度記録されます。

なぜこれが起こるのですか?他の形式の標準出力リダイレクトを使用する必要がありますか?

ベストアンサー1

Ubuntu 20.04でも同じ問題が発生しましたが、内容は実際にはファイルの先頭に作成され、コマンドには表示されませんでしたtail。 @steeldriverが指摘したように、この動作は予想され、ドキュメントに記載されています。

この問題はここでも議論されています。https://github.com/systemd/systemd/issues/8983

解決策公開日:2021年3月30日version 248

truncate:path上記と似ていますfile:pathが、ファイルを開くとファイルが切り捨てられます。

解決策:

ExecStartPre=/usr/bin/truncate --size=0 FILEPATH

参考資料:

おすすめ記事