systemd
Ubuntu 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
参考資料: