作者epstudio (蛋)
看板FreeBSD
标题Re: [问题] 关於 Syslog 纪录 remote log
时间Fri Jun 13 01:39:08 2008
由於这几天比较忙碌,一直到现在才把结果贴上来分享~
感谢 giacch 网友的协助测试,
经过一连串的测试,就如 giacch 所描述的,
不过应该不能说是误用,毕竟两个方式都可以让 syslogd 跑起来,
而且在 /etc/rc.d/syslogd 的 script 中,最後也是丢给 /usr/sbin/syslogd 去跑,
/etc/rc.d/syslogd 只是做了一些前处理的动作~
只是後来发现效果不同,以致於 remote log 失败~
经过如下:
小弟原先以 /etc/rc.d/syslogd -4 -a 0/0:* 的方式启动 syslogd,
发现 syslogd 虽然成功启动,但并没有接收远端的封包,
为了确认远端 udp 封包是否正确传入,发现 tcpdump 可以正确抓取到封包,
证实远端并没有问题,原因一定是出在 syslogd 身上~
google 了一些文件後发现并没有特别提到两种启动方式的差异,
倒是有些提到要在 /etc/rc.conf 加入 syslogd_flags="-4 -a 0.0.0.0/0:*" ,
跟着做完,重启 syslogd、重启 server,还是无法进行 remote log ~
後来收到 giacch 网友的 mail 讨论,在讨论过程中提点了敝人一些可能的问题,
只是情况依旧,有封包,没纪录,
最後敝人提议将 log 转给 giacch 的 server ,由其测试是否能成功写入纪录,
giacch 同意协助做测试,因此敝人马上修改 log server 位置,
giacch 也将其 syslogd 重启为接受 remote log,
接着就告知敝人其已经收到写入的纪录,并将 log 内容告知敝人,
经确认该 log 内容是正确的,那问题就出在两台 server 的 syslogd 差在哪里,
比对後发现敝人使用 /etc/rc.d/syslogd 启动,
而 giacch 网友使用 /usr/sbin/syslogd 启动,
接着马上将 syslogd kill,并从 /usr/sbin/syslogd 重启 syslogd ......成功了!
追究其原因猜测,在 /etc/rc.d/syslogd 的最後一行为:run_rc_command "$1"
因为 /etc/rc.d/syslogd 是一个 shell script,
如果 script 中没有把後面参数原封不动的传给目标档案去执行,
那这些参数等於是在过程中被丢弃了,
加上 /etc/rc.d/syslogd 只接受 start/stop/restart/force 等参数,
而 /usr/sbin/syslogd 却不接受上述参数,而接受 -4 -a 0/0:* 之类的参数,
更加确定两种启动方式会有极大的差别!
结论就是:remote log 务必从 /usr/sbin/syslogd 下参数。
感谢 giacch 网友的协助测试,让敝人对 remote log 的疑问有了成果,感谢 giacch!
唯一未解开的疑问是:已经在 rc.conf 中加入 syslogd_flags="-4 -a 0.0.0.0/0:*"
为何 reboot 之後依然无法自动启用 remote log?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.127.180.162
※ 编辑: epstudio 来自: 140.127.180.162 (06/13 17:53)