我正在编写Linux shell脚本(sh,bash或csh)来确定哪个syslog守护进程正在运行。 什么是最好的办法呢? 由于我只考虑基于RHEL和rpm的版本,所以Debian及其派生版可以忽略。
就我所知, syslog-ng和rsyslog (默认)是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文件等希望它可以帮助你。