我正在寻找一种获取所有服务(/etc/init.d或upstart或systemd)的列表的方法,这些服务应该已启动(或已在启动时启动)。
您如何获得所有启动服务的列表?—我知道这个问题,建议使用service --status-all
。
但这并没有告诉我,哪些服务应该处于运行状态。它使用“ status
”参数调用所有初始化脚本。这是所有可能正在运行的服务的列表。
但是我想知道,在引导时启动的服务是否仍在运行。
例…
我已经安装了webfs。但是我不希望它在启动时运行。因此,我禁用了它:sudo update-rc.d webfs disable
。而且我还安装了samba,它应该在启动时运行。但是它已停止(无论出于何种原因)。sudo service --status-all
在这里没有帮助我:
$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
[ - ] samba
[ - ] webfs
两者都关闭了,但是我不知道,应该打开一个(桑巴舞)。
所以…
如何获得启动时启动的所有服务的列表?并且,作为扩展,是否有一种简单的方法来获取这些服务的“状态”(如果没有,我将简单地遍历此列表并运行“ service $ service status”,或类似的东西)。
谢谢,亚历山大
编辑2015-05-04: 我在Ubuntu 14.04上。
这个问题的主要重点如下:
但是我想知道,在引导时启动的服务是否仍在运行。
因此,initctl list
没有太大帮助。它实际上并没有考虑/etc/init.d
脚本启动的服务(与中的新贵脚本相比/etc/init
)。
另外列出/etc/rc?.d/S*
并没有帮助。它将生成服务列表,这些服务可能已在给定的运行级别中启动。它没有显示我是否应该启动的服务仍在运行。
基本上,我正在svcs -x
从Solaris for Ubuntu 寻找类似的东西。使用svcs -x
,如果已启动的服务不再运行,我将获得输出。这,我也需要Ubuntu。
原因:我想对我们的Icinga / Nagios监视系统进行(或多或少...)常规检查,如果某项服务不再运行,应该会提醒我。由于我们为许多不同的客户提供了许多不同的服务器,因此定义“重要”服务的列表并不能真正扩展。
initctl list
,哪个列出了已启动/正在运行的进程,但该列表还将包括手动启动的进程
initctl list
。但这并不能真正解决问题,因为它还会显示手动启动的服务。而且它不显示未运行的服务。