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

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

我创建了一个服务;我们称之为abc.service。我运行:

sudo systemctl enable /home/pi/abc.service 1>output.txt 2>error.txt

并且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.

为什么是这样?

编辑:我的目的是这样的——我有一个全局程序正在运行,它可以运行命令,带有 stderr 的命令会被标记并打印到错误文件中。但是,尽管这似乎不是一个错误,但 systemd 似乎正在打印到 stderr(因此也是我的错误文件)。

EDIT2:systemd 文件示例:

[Unit]
Description=Test file

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

[Install]
WantedBy=multi-user.target

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

答案1

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

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

看起来该操作似乎没有遵循 Unix 关于什么是错误、什么不是错误的“标准”。

相关内容