5

我正在编写 Linux shell 脚本(sh、bash 或 csh)来识别正在运行的 syslog 守护进程。最好的方法是什么?由于我只考虑基于 RHEL 和 rpm 的分发,因此可以忽略 Debian 及其衍生产品。

4

3 回答 3

3

据我所知,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
于 2012-09-20T10:58:28.890 回答
1

可以解析 lsof 的输出以查看哪些进程打开了 /var/log/syslog 文件,一个非常粗略的示例是:

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

如果您使用的是单一发行版,则可能有更优雅的检查方式。

于 2012-09-20T10:48:26.743 回答
0

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

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

这将为您提供类似于以下内容的输出

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

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

于 2014-10-31T07:45:43.397 回答