尝试使用 systemd 通过 tee 将输出发送到日志文件,但日志文件尚未创建?

尝试使用 systemd 通过 tee 将输出发送到日志文件,但日志文件尚未创建?

我想通过 运行一个节点应用程序systemd,并将其输出发送到 stdout 和日志文件。节点应用程序位于名为 的文件夹中www/www.appname.com,我希望将日志文件放在 中www/log.appname.com。我定义了以下服务servicename

[Service]
ExecStart=/usr/bin/node server | tee -a ../log.appname.com/appname.service.log
KillMode=process
Restart=always
RestartSec=20
WorkingDirectory=/home/username/www/www.appname.com

[Install]
WantedBy=default.target

但是当我运行我的服务时,例如

systemctl --user restart servicename

然后文件夹www/log.appname.com仍然是空白的,所以也许我使用的路径名有问题tee

答案1

不直接支持 Shell 命令行。如果要使用 Shell 命令行,则需要将其明确传递给某种 Shell 实现。示例:

ExecStart=sh -c 'dmesg | wc'

因此尝试类似

ExecStart=sh -c '/usr/bin/node server | tee -a ../log.appname.com/appname.service.log'

相关内容