systemd服务:StandardError写入StandardOutput

时间:2018-01-17 21:06:39

标签: linux debian systemd

我在Debian 9上使用systemd 236(通过backports,以便使用文件:)我有以下服务文件:

[Unit]
Description=landing

[Service]
User=vagrant
Group=vagrant

WorkingDirectory=/srv/landing/app
ExecStart=/usr/bin/node app.js
StandardOutput=file:/srv/landing/logs/app/stdout
StandardError=file:/srv/landing/logs/app/stderr

Restart=on-failure

[Install]
WantedBy=multi-user.target srv-landing-app.mount

问题是stderr转到/ srv / landing / logs / app / stdout 而不是/srv/landing/logs/app/stderr.

当我使用./app.js 2> err 1> out stderr运行我的应用程序时,stdout正确分开,所以错误不是来自应用程序。

我非常想知道那里发生了什么。

编辑:按照评论中的要求输出在ExecStart中执行ls -l /proc/$$/fd; exit 0的shell脚本:

total 0
lr-x------ 1 vagrant vagrant 64 Jan 17 21:59 0 -> /dev/null
l-wx------ 1 vagrant vagrant 64 Jan 17 21:59 1 -> /srv/landing/logs/app/stdout
lr-x------ 1 vagrant vagrant 64 Jan 17 21:59 10 -> /home/vagrant/x.sh
l-wx------ 1 vagrant vagrant 64 Jan 17 21:59 2 -> /srv/landing/logs/app/stdout

编辑2:我尝试了一个只有StandardError的服务文件 - 没有StandardOutput - 并且在这种情况下StandardError正常工作。

(我也试过交换StandardError和StandardOutput的顺序,但这不会改变任何东西。)

0 个答案:

没有答案