什么是确定在Linux上运行哪个syslog守护进程的最佳方法?

我正在编写Linux shell脚本(sh,bash或csh)来确定哪个syslog守护进程正在运行。 什么是最好的办法呢? 由于我只考虑基于RHEL和rpm的版本,所以Debian及其派生版可以忽略。

就我所知, syslog-ngrsyslog (默认)是RHEL上唯一可用的。 您可以探测进程空间,查看哪个进程当前持有/var/log/syslog打开,或者只需检查安装了哪个syslog守护进程(尽管可以同时安装它们)。

 $ lsof /var/log/messages /var/log/syslog 2>&1 | grep syslog $ rpm -q rsyslog syslog-ng $ pgrep -u root syslog | xargs ps -p 

我们可以解析lsof的输出来查看哪些进程打开了/ var / log / syslog文件,一个非常简单的例子是:

 sudo lsof | grep /var/log/syslog | cut -f1 -d' ' 

如果你正在使用一个单一的分配,可能会有更多优雅的检查方式。

在基于debian的系统上,运行以下脚本查看安装的内容:

 dpkg-query -l '*syslog*' | grep ii 

这会给你类似于下面的输出

 ii rsyslog 7.4.4-1ubuntu2.3 i386 reliable system and kernel logging daemon 

这样你就不必grep文件等希望它可以帮助你。