启动期间 stderr 转到哪里(SysVinit)?

启动期间 stderr 转到哪里(SysVinit)?

我正在尝试诊断我配置和构建的自定义 Linux 内核遇到的一些启动问题。我一直在挖掘 klogd 的一些源代码,显然,如果启用了调试(通过 -d 选项),它应该将一些错误消息打印到 stderr。我知道在终端上,stderr 通常与 stdout 位于同一位置;但是,在这种情况下,屏幕/控制台配置存在一些问题,因此在启动期间根本没有任何内容打印到屏幕上(尽管内核启动消息正在打印到/var/log/kern.log)。

但是,我期望的 klogd stderr 消息似乎没有打印到该日志文件中。

所以,我的问题是:在 SysVinit 启动序列期间打印到 stderr 的内容应该在哪里?是否可以将所有这些重定向到一个文件?如果是这样,在初始化脚本中执行此操作的最佳方法是什么?

提前致谢!

编辑:/etc/syslog.conf 的内容:

# Begin /etc/syslog.conf

auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *

# End /etc/syslog.conf

答案1

根据第 1 条这个问题这个答案,默认情况下,引导进程 stderr 和 stdout 不会在任何地方捕获,除非显式重定向到 syslog。但是,可以使用诸如引导日志,一个由 sysvinit 启动的守护进程,用于捕获这些消息。

在您的情况下,这样的服务需要在 klogd 之前启动,这可以通过使用 LSB 初始化标头来实现,具体取决于发行版。

相关内容