检测 Linux 系统上正在运行哪个系统管理器
客观的
有多个系统管理器可以在您的 Linux 系统上运行。目前最常见的系统管理器是SysV(init)、Systemd和Upstart。如果您不确定您的 Linux 系统上正在运行哪个系统管理器,您可能会发现这个简短的指南对您有用。
要求
需要对 Linux 系统进行特权访问。
困难
简单的
惯例
# – 要求以root权限直接以root用户身份或使用
sudo
命令执行给定的linux命令$ – 要求以常规非特权用户身份执行给定的 Linux 命令
指示
系统管理器是 Linux 系统上启动的第一个进程。因此,使用 ps -p 1 命令查看首先启动的进程可以提供一些线索,但没有明确的答案。例子:
系统V
# ps -p 1
PID TTY TIME CMD
1 ? 00:00:01 init
系统
# ps -p 1
PID TTY TIME CMD
1 ? 00:00:04 systemd
暴发户
# ps -p 1
PID TTY TIME CMD
1 ? 00:00:01 init
第一个进程符号链接
检查 Linux 系统上正在运行哪个系统管理器的更可靠方法是检查指向第一个系统进程的可执行二进制文件的符号链接。
系统V
# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Apr 3 04:17 /proc/1/exe -> /sbin/init
OR
# stat /proc/1/exe | grep File
File: `/proc/1/exe' -> `/sbin/init'
系统
# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Mar 27 09:39 /proc/1/exe -> /lib/systemd/systemd
OR
# stat /proc/1/exe | grep File
File: /proc/1/exe -> /lib/systemd/systemd
暴发户
# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Apr 3 04:29 /proc/1/exe -> /sbin/upstart
OR
# stat /proc/1/exe | grep File
File: '/proc/1/exe' -> '/sbin/upstart'
初始化符号链接
检查哪个系统管理器可执行 /sbin/init
指向:
系统V
# ls -l /sbin/init
-rwxr-xr-x 1 root root 36992 Jul 14 2013 /sbin/init
系统
# ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Feb 14 03:36 /sbin/init -> /lib/systemd/systemd
暴发户
# ls -l /sbin/init
lrwxrwxrwx 1 root root 7 May 19 2016 /sbin/init -> upstart