如何修复 System has not been booted with systemd 报错信息?
一、问题描述:
我们在学习 linux 系统时,使用 systemd 命令(比如 sudo systemctl status ssh),可能会遇到一个报错信息:
System has not been booted with systemd as init system (PID 1). Can’t operate.Failed to connect to bus: Host is down
如下图:
翻译过来就是:“系统尚未以systemd作为初始系统启动”。
二、问题分析:
1)当你尝试使用 systemd 命令来管理 Linux 系统上的服务的时候,之所以会报错,可能因为系统中根本就没有使用 systemd,而是使用的 SysV init (sysvinit)。
2)如果你是在 windows 中通过 WSL 使用的 Ubuntu 或者 Dibian 系统,默认情况下系统使用的是 SysV 而不是 systemd。
三、解决方法:
1、查看系统运行的第一个进程(init 系统)
ps -p 1 -o comm=
它应该在输出中显示 init 或 sysv(或类似的东西)。如果你看到的是 init,那么你的系统就没有使用 systemd,应该使用 init 命令。
2、使用 sysvinit 命令,代替 systemctl 命令。
3、sysvinit 命令与 systemctl 命令的语法相似。对比如下:
Sysvinit command | Systemd command |
---|---|
service service_name start | systemctl start service_name |
service service_name stop | systemctl stop service_name |
service service_name restart | systemctl restart service_name |
service service_name status | systemctl status service_name |
chkconfig service_name on | systemctl enable service_name |
chkconfig service_name off | systemctl disable service_name |