システムサービスがあります。
[Unit]
Description=My application
[Service]
ExecStart=/bin/java myapp.jar
Type=simple
User=photo
オプションがあります:標準出力=しかし、それを使ってファイルに書き込む方法を理解していません。 https://www.freedesktop.org/software/systemd/man/systemd.exec.html
ファイルパスをどこかに置くことを望みましたが、マニュアルではソケットとファイル記述子について説明します。そのキーワードよりも多くの設定が必要なようです。
ファイルパスはどこに置くべきですか? この用途の例が見つかりません。
ありがとう
答え1
使用:
[Unit]
Description=My application
[Service]
ExecStart=/usr/bin/java -jar myapp.jar
Type=simple
User=photo
StandardOutput=file:/var/log/logfile
ここで説明されているように:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
これにより、サービスを再起動するたびにログファイルの内容が上書きされます。StandardOutput/Error
systemd ディレクティブはファイルの追加をサポートしていません。
サービスの再起動中にファイルログを保持し、新しい行のみを追加するには、代わりに次を使用します。
[Unit]
Description=My application
[Service]
ExecStart=/usr/bin/sh -c 'exec /usr/bin/java -jar myapp.jar'
Type=simple
User=photo
exec
/bin/java
つまり、フォーキングなしでリダイレクトを設定した後、シェルプログラムがそのプログラムに置き換えられることを意味します。したがって、/bin/java
自分で実行することとは違いはありませんExecStart=
。
答え2
アプリケーションがPythonスクリプトの場合は、以下も設定する必要があります。
Environment=PYTHONUNBUFFERED=1
それ以外の場合、バッファがフラッシュされるまでログメッセージは表示されません。