exe*_*ral 12 logs systemd services stdout
我有一个 systemd 服务:
[Unit]
Description=My application
[Service]
ExecStart=/bin/java myapp.jar
Type=simple
User=photo
Run Code Online (Sandbox Code Playgroud)
有一个选项:StandardOutput=但我不明白如何使用它来写入文件。 https://www.freedesktop.org/software/systemd/man/systemd.exec.html
我希望将文件路径放在这里,但文档讨论了套接字和文件描述符。似乎它需要的配置不仅仅是那个关键字。
把文件路径放在哪里? 我找不到任何这种用途的例子
谢谢
Pio*_*icz 17
用:
[Unit]
Description=My application
[Service]
ExecStart=/usr/bin/java -jar myapp.jar
Type=simple
User=photo
StandardOutput=file:/var/log/logfile
Run Code Online (Sandbox Code Playgroud)
如此处所述: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
Run Code Online (Sandbox Code Playgroud)
exec
表示/bin/java
在不分叉的情况下设置重定向后,shell 程序将被程序替换。所以和/bin/java
直接在ExecStart=
.
如果您的应用程序是 Python 脚本,您还需要设置
Environment=PYTHONUNBUFFERED=1
Run Code Online (Sandbox Code Playgroud)
否则,在刷新缓冲区之前,您将看不到任何日志消息。
归档时间: |
|
查看次数: |
26734 次 |
最近记录: |