如何找出我的 Linux 操作系统上安装了哪个服务管理器?

如何找出我的 Linux 操作系统上安装了哪个服务管理器?

我知道我的 Linux 安装附带了其中一个服务管理器实现。它可以是 Systemd、Upstart 或任何其他服务管理器实现。

所以,我的问题是如何找出我的 Linux 系统上安装了哪一个?

谢谢。

更新

以下是我的系统中用于搜索 systemd 和 upstart 的一些 ps/grep 命令及其输出:

$ ps aux | grep systemd
root       341  0.0  0.0  52244  3836 ?        Ss   15:54   0:00 /lib/systemd/systemd-udevd --daemon
root       588  0.0  0.0  43452  3200 ?        Ss   15:54   0:00 /lib/systemd/systemd-logind
root      1889  0.0  0.0  17520  1840 ?        S    15:54   0:00 /lib/systemd/systemd-localed
user123      2348  0.0  0.0  15948  2236 pts/1    S+   15:56   0:00 grep --color=auto systemd
$ ps aux | grep upstart
root       329  0.0  0.0  19744  2308 ?        S    15:54   0:00 upstart-udev-bridge --daemon
root       763  0.0  0.0  15808  2168 ?        S    15:54   0:00 upstart-file-bridge --daemon
root       770  0.0  0.0  15528  1984 ?        S    15:54   0:00 upstart-socket-bridge --daemon
user123      1525  0.0  0.0  22304  2336 ?        Ss   15:54   0:00 upstart-event-bridge
user123      1553  0.0  0.0  22368  1828 ?        S    15:54   0:00 upstart-dbus-bridge --daemon --session --user --bus-name session
user123      1560  0.0  0.0  30784   280 ?        S    15:54   0:00 upstart-file-bridge --daemon --user
user123      1562  0.0  0.0  22312   216 ?        S    15:54   0:00 upstart-dbus-bridge --daemon --system --user --bus-name system
user123      2350  0.0  0.0  15948  2280 pts/1    S+   15:56   0:00 grep --color=auto upstart

答案1

最简单的方法是找出操作系统并查看它默认运行什么。init 系统并不容易改变。

在完全未知的系统上,我建议使用 ps 和 grep 的混合来检查与每个 init 系统相关的常见进程并查看..

我没有使用“经典”初始化脚本系统的系统,所以我无法检查。

在现代的 Fedora 或 Ubuntu 机器上,您可以使用ps aux | grep systemd,它应该发出类似这样的行usr/lib/systemd/systemd。它还将配置文件存储在etc/systemd/

您还可以使用 systemctl 来处理服务

在基于 upstart 的系统上,您可以执行ps aux | grep upstart并找到一些与 upstart 相关的进程。

Upstart 使用服务命令,并将配置文件存储在 /etc/init/ 中,就像经典的 init 文件一样。它使用自己的格式,保存为 .conf 文件 - 尽管其中一些是经典的 init 文件。

您确实经常使用 sysv 样式的 init 脚本和更现代的脚本,但我没有任何系统仅使用 sysv 样式的 init 脚本来检查它们。如果您正在为未知系统编写 init 脚本,这通常是一个安全的选择,尽管您会错过较新的 init 系统添加的亮点。

答案2

在基于 Debian 的 Linux 发行版上:

$ dpkg -S $(which init)
systemd-sysv: /sbin/init

在基于Redhat的Linux发行版上:

$ rpm -qf $(which init)
upstart-0.6.5-16.el6.x86_64

要完成的...

相关内容