何时在 newsyslog.conf 中使用“pkill...”标志?

何时在 newsyslog.conf 中使用“pkill...”标志?

我正在配置relayd记录到它自己的日志,但我不清楚是否应该运行"pkill...".

我可以在默认情况下看到以下内容newsyslog.conf

# logfile_name      owner:group     mode count size when  flags
/var/log/maillog                    640  7     *    24    Z
/var/log/pflog                      600  3     250  *     ZB "pkill -HUP -u root -U root -t - -x pflogd"
/var/www/logs/access.log            644  4     *    $W0   Z "pkill -USR1 -u root -U root -x httpd"
/var/www/logs/error.log             644  7     250  *     Z "pkill -USR1 -u root -U root -x httpd"

我添加了该行以表明单个守护程序的日志maillog没有标志命令,这至少看起来与我的."pkill..."relayd

答案1

当您旋转日志时,您实际上是在创建一个新文件,该文件将位于不同的索引节点上。由于httpd在运行时保持日志文件打开,因此写入日志消息的文件描述符现在将指向一个不存在的文件。这就是为什么您需要向其发送SIGUSR1信号,这将使其重新打开日志文件(即删除陈旧的文件描述符并打开新文件)。按照httpd手册页

httpd当它接收到时重新读取其配置文件SIGHUP并在接收到时重新打开日志文件SIGUSR1

(请注意,这不是通用规则,SIGUSR1不同的软件会触发不同的事情。)

我并不完全确定这一点,但事实上,不需要发出smtpd日志已轮换的信号,这强烈表明它会不断打开和关闭日志文件,这在邮件服务器上可能很便宜,但可能不是在繁忙的 HTTP 服务器上。

在其手册页上没有表明需要relayd在旋转日志之前发出信号,但是(这只是一种预感)我希望它的行为类似于httpd.我的relayduse实例syslog,所以我无法复制您的用例,但您可以使用类似的方法fstat | grep "relayd"来检查它是否使日志文件保持打开状态。

您可以在邮件列表中询问[email protected],或者通过看代码

相关内容