三种查法,从最直接的开始。
看 /sbin/init 指向哪里
ls -l /sbin/init
- 指向
/lib/systemd/systemd,就是 Systemd; - 指向
/lib/sysvinit/init,就是 System V。
看 PID 1 是谁
ps -p 1 -o comm=
- 输出
systemd:Systemd; - 输出
init:System V。
如果输出是 bash 之类,说明你当前环境的 1 号进程是 shell 而不是 init——典型场景是容器里。容器的 PID 1 是启动命令本身,这时两个方法都判断不出发行版用的哪套初始化系统,得上宿主机看。
看 systemd 的服务清单
systemctl list-unit-files | grep 'systemd'
能列出 xxx.service 这类条目,说明 Systemd 在跑。反过来说,这条命令本身能在 Systemd 以外的系统上直接报 command not found,也算是另一种判断方式。
评论
还没有人留言。