我正在编写Linux shell脚本(sh,bash或csh),以确定正在运行哪个syslog守护进程。
最好的方法是什么?
由于我只考虑RHEL和基于rpm的发行版,因此可以忽略Debian及其衍生产品。
/var/log/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' '
如果您正在使用单个发行版,则可能有更优雅的方法来进行检查。
dpkg-query -l '*syslog*' | grep ii
这将会给你类似于以下的输出
ii rsyslog 7.4.4-1ubuntu2.3 i386 reliable system and kernel logging daemon
这样你就不必要去查找文件了。希望能对你有所帮助。