欢迎光临中国服务器网
关于我们 | 加入收藏夹 | 联系我们 | English
当前位置:主页>故障排除>
HP UNIX:如何将一个命名的管道用作syslogd的输出文件?
来源:  作者:本站
如何将一个命名的管道用作 syslogd 的输出文件?

问题描述

如何将一个命名的管道用作 syslogd 的输出文件?
是否存在我们应该了解的任何限制?

解决方法

Syslogd(1M) 是一个用于记录系统信息的后台进程。
这些系统消息可以是由使用 syslog (3C) 库接口的任何其他程序产生的。

Syslogd(1M) 支持使用一个配置文件,系统管理员可以在这个配置文件中指明使用什么输出文件来记录系统消息。虽然此输出文件通常为磁盘上的一个普通文件,但是有一些请求,要求使用命名的管道来代替普通的文件。虽然 syslogd(1M) 代码允许系统管理员指定一个命名的管道做为输出文件,但是 syslogd(1M) 的这种配置既不推荐也不正式支持。主要原因是这种配置不是很可靠,可能会对记录重要系统消息的过程来说非常不利。


具体来说,使用命名的管道做为 syslogd(1M) 的输出文件可能会导致下列方案中描述的不想要的情况:

- 在 syslogd(1M) 打开命令管道之前,必须有一个进程打开该命名管道(在 /etc/syslog.conf 中配置),否则它不会从 syslogd(1M) 收到任何数据。这种情况会导致 syslogd(1M) 发生阻塞。

- 如果读取该命名管道的进程关闭,syslogd(1M) 尝试向该管道写入数据时,会出现 syslogd(1M) 可能终止的情况。

- syslogd(1M) 收到 SIGHUP 信号时,它会重新读取它的配置文件。做为这个过程的一部分,它会关闭当前的输出文件,然后打开 (可能) 配置文件中指定的一些新的输出文件。任何从做为输出文件的命名管道读取的进程都可能需要重新打开该命名的管道,以继续接受消息。

- 在任何情况下,当 syslogd(1M) 向命名管道写入时,syslogd 会停滞下来,等待它到该管道的写入完成。当 syslogd(1M) 停滞时,它可能会丢失消息,因为它不再从 Kernel 消息缓冲区读取。Syslogd(1M) 向命名管道(/dev/log)写入可能会使其充满,从而导致调用 syslog(3C) 的程序的延迟,以及当输入管道充满时 (可能) 丢失消息。

- 当应用程序在从命名管道读取数据中止时,可能会导致 syslogd(1M) 中止。

- 当我们将命名管道指定为 syslogd(1M) 的输出文件时,还应该注意一些其他几点内容。

虽然 HP 不建议使用命名管道,但是当您真正必须将命名管道用作 syslogd 的输出文件时,应该了解上述限制,还必须正确配置应用程序以避免任何非预期的情况。
对不起,您需要登录后才能查看全部详细内容

免责声明:凡本站注明来源为xx所属媒体的作品,均转载自其它媒体转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。