upstart、exec 和 stderr

upstart、exec 和 stderr

我在 Ubuntu Lucid 机器上使用syslog-ng以下upstart脚本:

# syslog-ng - system logging daemon
#

description     "Syslog-ng daemon"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

expect fork
respawn

pre-start script
    test -x /usr/sbin/syslog-ng || { stop; exit 0; }
    mkdir -p -m0755 /var/run/syslog-ng
end script

exec /usr/sbin/syslog-ng -p /var/run/syslog-ng/syslog-ng.pid

syslog-ng配置文件错误时,syslog-ng在 stderr 上输出错误消息。不幸的是,此错误被 upstart 捕获,并且在启动服务时不会到达控制台,因此无法知道服务启动失败的原因。

upstart 捕获 stderr 是正常现象吗?可以设置吗?

答案1

这记录在init(5);您可以将以下行添加到您的/etc/init/syslog-ng.conf以查看输出:

console output

或者,当您将以下内容添加到内核启动参数时,您可以看到所有 upstart 脚本的输出:

INIT_VERBOSE=yes

您可以通过在启动期间编辑 grub 菜单中参数来临时执行此操作,或者通过编辑/etc/default/grub并将其添加到来永久执行此GRUB_CMDLINE_LINUX操作,然后运行update-grub

有关详细信息和最佳实践,请参阅新贵食谱

答案2

如果 stdout 能够通过,您可以做的是。将 stderr 通过管道传输到 stdout,这应该可以解决您的问题。:)

syslog-ng 2>&1

相关内容