为什么某些 systemctl 操作会输出到 stderr?

Som*_*Guy 5 command-line bash systemd

我创建了一项服务;让我们称呼它吧abc.service。我跑:

sudo systemctl enable /home/pi/abc.service 1>output.txt 2>error.txt
Run Code Online (Sandbox Code Playgroud)

并且output.txt为空,而error.txt包含:

Created symlink /etc/systemd/system/multi-user.target.wants/abc.service -> /home/pi/abc.service.
Created symlink /etc/systemd/system/abc.service -> /home/pi/abc.service.
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

编辑:我的目的是这样的——我有一个正在运行的全局程序,可以运行命令,并且带有 stderr 的命令被标记并打印到错误文件中。然而,似乎 systemd 正在打印到 stderr (以及我的错误文件),即使它看起来不是一个错误。

EDIT2:示例 systemd 文件:

[Unit]
Description=Test file

[Service]
Type=simple
ExecStart=/bin/ls /home/pi

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

刚刚测试,启用此文件打印到 stderr (如error.txt上面所示)。测试服务,打印主目录的目录内容。

jpe*_*ezz 1

这里有很多文档: systemd 手册页

您还可以将“启用”输出重定向到标准输出(尽管这也可能在那里重定向真正的错误。

看起来该操作确实不遵循 Unix “标准”来判断什么是错误、什么不是错误。