foo
当我在控制台中执行命令(即tty1
)时,输出将发送到控制台。
daemon foo started successfully
当我在虚拟终端 ( ) 中执行相同的命令时terminator
,我在终端中看不到任何输出,但输出被发送到syslog
.
为什么会这样?我如何控制输出的发送位置?
我有一个执行 command 的 init 启动脚本foo
,并将输出发送到tty1
.我想将输出发送到 syslog (就好像我在虚拟终端中启动了 init 脚本,而不是在控制台中一样)
答案1
正如您可以在守护进程的 Debian 手册页,这很大程度上取决于您如何在哪个 init 系统下实现守护进程。
- SysV 方式(stdin/out/err 连接到 /dev/null)
- 这 ”新风格“方式:(stdout/stderr 定向到 systemd-journald.service)
... 10.新型守护进程可以选择不使用 syslog() 调用直接记录到系统 syslog 服务只需通过 fprintf() 记录到标准错误,然后由 init 系统转发到 syslog...
在后一种情况下,您在 xterm 下注意到的行为是正常的方式。
守护进程通过 fprintf(stdout / stderr)输出的内容由 syslog 控制。
因此,根据您的 syslog 配置(如您在 syslog.conf 文件中找到的那样)和日志级别,您的守护程序输出将被忽略/附加到某个特定文件/在系统控制台(您的 tty1)上回显,从来没有 xterm。