リダイレクト
StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log
ここに記載されているとおり:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
この方法では、サービスが再起動するたびにログ ファイルの内容全体が上書きされることに注意してください。
追加
サービスの再起動間でファイル ログを保持し、ログに記録された新しい行を追加するだけの場合:
# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
v240 より古い systemd の場合、以下を使用できます:
ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >>/var/log/flume-ng/log1.log 2>>/var/log/flume-ng/log2.log'
exec
シェルプログラムが my_binary
に置き換えられることを意味します フォークせずにリダイレクトを設定した後のプログラム。したがって、my_binary
を実行しても違いはありません。 ExecStart=
の直後 .
<ブロック引用>
ExecStart=/usr/bin/nohup …
これは間違っています。それを除く。このサービスは、対話型ログイン セッションでは実行されていません。そもそもハングアップ信号を送信する制御端末やセッション リーダーはありません。
<ブロック引用>
ExecStart=… &
これは間違っています。それを除く。これはシェルスクリプトではありません。 &
特別なシェルのような意味はありません.
StandardOutput=/var/log/flume-ng/log1.log StandardError=/var/log/flume-ng/log2.log
これらは間違っています。これらは使用しないでください。 systemd すでに送信 サービスユニットでそのような設定を行わなくても、サービスプロセスの標準出力とエラーをそのジャーナルに出力します。
で表示できますjournalctl -e -u flume-ng.service
上書きせずにファイルに記録する場合 (system.d バージョン 240 以降が必要):
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
また
StandardOutput=append:/var/log/flume-ng/log.log
StandardError=inherit