Итак, вы следуете некоторому руководству в Интернете, и вы использовали команду systemd, например sudo systemctl start.
К вашему удивлению, команда выдает такую ошибку:
System has not been booted with systemd as init system (PID 1). Can't operate.
Причина: ваша система Linux не использует systemd
Причина в том, что вы пытаетесь использовать команду systemd для управления службами в Linux, но ваша система не использует systemd и (скорее всего) использует классическую систему SysV init (sysvinit).
Но как это возможно? Вы используете Ubuntu, и руководство также предназначено для той же версии Ubuntu. Почему это у вас не работает?
Если вы используете Ubuntu внутри Windows с помощью WSL, у вас будет SysV вместо systemd, и ваша система будет жаловаться, когда вы запустите команду systemctl (предназначенную для систем Linux с системой systemd init).
Как узнать, какую систему инициализации вы используете? Вы можете использовать эту команду, чтобы узнать имя процесса, связанного с PID 1 (первым процессом, запущенным в вашей системе):
ps -p 1 -o comm=
Он должен отображать systemd или sysv (или что-то в этом роде) на выходе.
Как исправить ошибку «System has not been booted with systemd»?
Простой ответ – не использовать команду systemctl. Вместо этого используйте эквивалентную команду sysvinit.
Это не слишком сложно, и обе команды имеют несколько похожий синтаксис.
Эта таблица должна вам помочь.
Команда Systemd | Команда Sysvinit |
---|---|
systemctl start service_name | service service_name start |
systemctl stop service_name | service service_name stop |
systemctl restart service_name | service service_name restart |
systemctl status service_name | service service_name status |
systemctl enable service_name | chkconfig service_name on |
systemctl disable service_name | chkconfig service_name off |
Какую бы вы статью не использовали, попробуйте использовать эквивалентные команды, и вы не увидите больше ошибки «System has not been booted with systemd as init system (PID 1). Can’t operate».