Resolva erros do systemctl causados por um sistema init diferente do systemd ou por uma configuração corrompida do systemd.
Sintoma
Ao executar o systemctl em uma instância Linux, um dos seguintes erros é retornado:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to get D-Bus connection: xxx xxx.
Causa
O systemctl é a ferramenta de linha de comando do systemd, o sistema init e gerenciador de serviços do Linux. Esses erros ocorrem pelos seguintes motivos:
-
O sistema não usa o systemd como sistema init.
Algumas distribuições Linux mais antigas ou leves (como Devuan, Alpine Linux ou Void Linux) usam outros sistemas init (como OpenRC, SysVinit ou runit) por padrão. Por exemplo, o Windows Subsystem for Linux (WSL) usa SysVinit por padrão.
Esse erro também ocorre ao executar o comando dentro de um contêiner Docker ou Podman não configurado para usar systemd.
O sistema usa systemd, mas o serviço está corrompido ou mal configurado.
Solução
-
Conecte-se à instância Linux.
Consulte Fazer logon em uma instância Linux usando o Workbench.
-
Verifique se o sistema usa o systemd como sistema init:
ps -p 1 -o comm=-
Saída vazia ou diferente de systemd: O sistema não usa systemd. Use os comandos de gerenciamento de serviços correspondentes ao sistema init atual.
NotaSe precisar de scripts
systemctl, use uma distribuição Linux compatível com systemd ou execute um sistema Linux com systemd ativado em um contêiner Docker.Por exemplo, se o sistema usar SysVinit (a saída é init), utilize o comando
serviceem vez desystemctl. A tabela a seguir compara os comandos comuns:Operação/comando
SysVinit
Systemd
Iniciar serviço
sudo service service_name startsudo systemctl start service_nameParar serviço
sudo service service_name stopsudo systemctl stop service_nameReiniciar serviço
sudo service service_name restartsudo systemctl restart service_nameVerificar status do serviço
sudo service service_name statussudo systemctl status service_nameAtivar inicialização automática
sudo chkconfig service_name onsudo systemctl enable service_nameDesativar inicialização automática
sudo chkconfig service_name offsudo systemctl disable service_name Saída é systemd: O sistema usa systemd. Caso o erro persista, o systemd pode estar corrompido ou mal configurado. Consulte a documentação oficial da sua distribuição para recuperar o serviço systemd.
-