Systemdサービスとしてプログラムを実行するときに、STDOUTとSTDERRをファイルにパイピングするのに問題があります。 .service
ファイルに次を追加しようとしました。
ExecStart=/apppath/appname > /filepath/filename 2>&1
しかし、これは機能しません。出力は最終的に/ var/log/messagesになり、journalctlを使用して表示できますが、別のファイルが必要です。
StdOutput=tty
を設定しようとしましたが、これをファイルにリダイレクトする方法が見つかりません。
任意の助けをいただければ幸いです。
ExecStart =
このサービスの開始時に実行される引数付きのコマンド。
したがって、systemd
は/apppath/appname
引数付き>
、/filepath/filename
、2>&1
試してください:
ExecStart=/bin/sh -c '/apppath/appname > /filepath/filename 2>&1'
試してください:
ExecStart=/usr/bin/sh -c "/apppath/appname > /filepath/filename 2>&1"
ExecStartは、最初の引数がバイナリ(例外なし)である必要があり、パイプまたはリダイレクトを許可しません。したがって、ExecStartを使用してシェルを起動し、その中で必要なすべての凝ったことを実行できます。