我想通过 运行一个节点应用程序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'