Como corrigir o erro "Systemctl Command Not Found" no Linux

Uma solução rápida para resolver o problema com o comando ‘systemctl’ e introdução de algumas alternativas eficientes para ele

systemctl sendo um utilitário importante no ecossistema Linux, é muito comum que você possa encontrar um problema de erro “systemctl: command not found” ao tentar executar o systemctl comando. Este pode não ser o caso para todas as distribuições do Linux, mas você provavelmente pode encontrar este erro quando estiver usando uma versão mais antiga da distribuição do Linux que não suporta o systemctl comando.

O problema que ocorre com você é muito comum e pode ser facilmente corrigido. Portanto, não se preocupe e apenas siga o tutorial completo para encontrar uma solução rápida e fácil.

Tentaremos entender o problema primeiro e depois corrigi-lo.

Insights sobre systemctl e systemd

Como o erro é com referência ao systemctl comando, seria bom saber os fundamentos deste comando para entender melhor a correção para este erro.

systemctl é um utilitário de linha de comando que o Linux oferece, que é usado para monitorar e controlar outro utilitário de linha de comando chamado ‘systemd‘. Ele também inspeciona e controla o gerenciador de sistema junto com osystemd' Utilitário.

Sintaxe geral:

systemctl [opção] [nome]

systemd é um pacote de daemons, bibliotecas e utilitários que controlam os programas executados quando o sistema é inicializado. systemd também consegue iniciar um trabalho importante, como iniciar um diário de atividade do sistema.

Este utilitário funciona como o utilitário de gerenciamento central para a maioria, senão todos os sistemas operacionais baseados em Linux.

Causa raiz do erro

A causa mais provável para esse erro pode ser que você esteja usando uma versão mais antiga da distribuição do Linux. Muitas das versões mais antigas usam o SysV init ao invés de systemd Utilitário.

systemd O utilitário está ausente nas versões anteriores do Linux, pois é uma adição recente à cesta de utilitários fornecidos pelo Linux. systemctl é compatível para funcionar e monitorar com o systemd utilitário e não funcionará com as configurações anteriores, como SysViniciar ou Subir na vida.

Se você não está usando systemd, então esse erro é esperado. É tão simples e direto quanto isso.

Você pode encontrar esse erro da seguinte maneira.

gaurav @ ubuntu: ~ $ sudo systemctl start ufw [sudo] senha para gaurav: sudo: systemctl: comando não encontrado gaurav @ ubuntu: ~ $ 

Aqui, tentamos iniciar o Ubuntu Fire Wall (ufw) usando o systemctl e encontrou o erro “systemctl: command not found”.

Então, o que fazer agora se você não deseja mudar sua distribuição Linux atual que está usando algum outro utilitário de gerenciamento central diferente systemd? Bem, nós temos uma solução rápida para você que permitiria manter sua distribuição Linux atual, bem como corrigir seu erro em nenhum momento.

Vamos observar a correção agora.

Corrigindo o erro “systemctl: command not found”

Finalmente, vejamos agora a solução do problema em questão depois de analisar as causas e os fatos básicos sobre o problema.

Fix 1: Substituindo systemctl com serviço comando

Uma solução simples para o erro em questão é usar o serviço comando em vez do erro que causa systemctl comando.

serviço comando ajuda a executar o SystemV init script que é usado pelas distribuições Linux mais antigas. Se você não deseja instalar o systemd utilitário em seu sistema, essa correção certamente funcionará para você.

Você pode iniciar, reiniciar ou parar quaisquer serviços e daemons em sua distribuição Linux usando o serviço comando.

O serviço comando e o systemctl O comando funciona da mesma forma, a única diferença aqui é a compatibilidade do comando com os utilitários que são responsáveis ​​pelo bom funcionamento do seu sistema.

Vamos ver o serviço comando com uma ilustração.

Sintaxe geral:

serviço sudo [nome_do_serviço] [ação]

Na sintaxe acima, o [açao] o espaço pode incluir ações como começar, Pare, reiniciar ou status.

Vamos executar o mesmo comando para iniciar o ufw serviço usando o serviço comando.

serviço sudo ufw start

Saída:

gaurav @ ubuntu: ~ $ sudo service ufw start gaurav @ ubuntu: ~ $ sudo service ufw status ● ufw.service - Firewall não complicado Carregado: carregado (/lib/systemd/system/ufw.service; habilitado; predefinição do fornecedor: enab Ativo: ativo (saiu) desde Seg 2020-09-28 11:22:34 IST; 1h 5min atrás Documentos: man: ufw (8) Processo: 333 ExecStart = / lib / ufw / ufw-init start silencioso (código = saiu, status = 0 / SU PID principal: 333 (código = saiu, status = 0 / SUCESSO) 28 de setembro 11:22:34 ubuntu systemd [1]: Firewall descomplicado iniciado. Aviso: O diário foi girado desde que a unidade foi iniciada. A saída de registro é incomplo

Aqui o serviço comando é usado em vez do systemctl comando e funcionou absolutamente bem.

Vamos ver mais um exemplo do serviço comando para obter uma compreensão adequada dele.

sudo serviço apache2 start

Saída:

gaurav @ ubuntu: ~ $ sudo service apache2 status ● apache2.service - O servidor Apache HTTP carregado: carregado (/lib/systemd/system/apache2.service; habilitado; predefinição do fornecedor: Drop-In: / lib / systemd / system / apache2.service.d └─apache2-systemd.conf Ativo: ativo (em execução) desde Seg 2020-09-28 11:22:47 IST; 1h 16min atrás Processo: 1172 ExecStart = / usr / sbin / apachectl start (código = encerrado, status = 0 / SUCCE PID principal: 1248 (apache2) Tarefas: 55 (limite: 4456) CGroup: /system.slice/apache2.service ├─1248 / usr / sbin / apache2 -k start ├─1249 / usr / sbin / apache2 -k start └─1250 / usr / sbin / apache2 -k start 28 de setembro 11:22:43 ubuntu systemd [1]: Iniciando o servidor HTTP Apache ... 28 de setembro 11:22:47 ubuntu apachectl [1172 ]: AH00112: Aviso: DocumentRoot [/ var / www 28 de setembro 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Não foi possível detectar com segurança 28 de setembro 11:22:47 ubuntu systemd [1]: Iniciou o Apache HTTP Servidor. Gaurav @ ubuntu: ~ $ 

Nós usamos o serviço comando para iniciar o utilitário apache2. Usando o status opção com o serviço comando exibirá o status atual do serviço. Obteremos os detalhes se ele está em execução ou inativo (inativo).

Vamos agora usar o Pare ação para parar o serviço apache2 usando o serviço comando.

gaurav @ ubuntu: ~ $ sudo serviço apache2 stop gaurav @ ubuntu: ~ $ sudo serviço apache2 status linhas 1--1 ... pulando ... ● apache2.service - O servidor HTTP Apache carregado: carregado (/ lib / systemd / system / apache2.service; enabled; fornecedor predefinido: ativado) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Ativo: inativo (morto) desde Seg 2020-09-28 12 : 42: 06 IST; 1s atrás Processo: 4928 ExecStop = / usr / sbin / apachectl stop (código = saiu, status = 0 / SUCCESS) Processo: 1172 ExecStart = / usr / sbin / apachectl start (código = saiu, status = 0 / SUCCESS) PID principal : 1248 (código = encerrado, status = 0 / SUCESSO) 28 de setembro 11:22:43 ubuntu systemd [1]: Iniciando o servidor HTTP Apache ... 28 de setembro 11:22:47 ubuntu apachectl [1172]: AH00112: Aviso : DocumentRoot [/ var / www / html] não existe 28 de setembro 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor, usando :: 1. Definir o 'S Set 28 11:22:47 ubuntu systemd [1]: Iniciado o servidor HTTP Apache.

A partir dos exemplos detalhados explicados acima, podemos concluir que podemos usar este comando em vez do systemctl comando para controlar e monitorar outros daemons e serviços sob a distribuição Linux.

Fix 2: Verificando systemd pacote

Às vezes, pode ser o caso de que apenas o systemd a instalação do pacote pode resolver o problema. Primeiro, você precisa verificar o status de instalação do systemd pacote em seu sistema.

Use o seguinte comando para verificar o pacote em seu sistema.

sudo dpkg -l | grep systemd

Se o systemd utilty já está instalado, você obterá uma saída semelhante à mostrada abaixo.

gaurav @ ubuntu: ~ $ sudo dpkg -l | grep systemd [sudo] senha para gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 sistema de mensagens simples entre processos (systemd - integração de usuário) ii libnss-systemd: amd64 237-3ubuntu10.42 amd64 módulo nss fornecendo dinâmico resolução de nome de usuário e grupo ii libpam-systemd: amd64 237-3ubuntu10.42 sistema amd64 e gerenciador de serviços - módulo PAM ii libsystemd0: amd64 237-3ubuntu10.42 amd64 biblioteca de utilitários systemd ii libsystemd0: i386 237-3ubuntu10.42 i386 biblioteca de utilitários systemd ii networkd-dispatcher 1.7-0ubuntu3.3 all Dispatcher serviço para mudanças de status de conexão systemd-networkd ri python3-systemd 234-1build1 amd64 Python 3 ligações para systemd ii systemd 237-3ubuntu10.42 sistema amd64 e gerenciador de serviço ii systemd-sysv 237- Sistema 3ubuntu10.42 amd64 e gerenciador de serviços - links SysV gaurav @ ubuntu: ~ $ 

Se você obtiver uma saída semelhante a esta, significa que systemd está instalado em seu sistema.

Se não estiver instalado, você pode instalá-lo da seguinte maneira.

sudo apt-get update
sudo apt-get install systemd

Se ele estiver instalado e ainda assim o erro persistir, tente reinstalá-lo usando o seguinte comando.

sudo apt-get install --reinstall systemd

Isso resolverá seu problema instalando o systemd Utilitário.

Conclusão

Aprendemos a corrigir o “systemctl: command not found” neste tutorial. Podemos concluir com segurança que usar o serviço comando em vez do systemctl é uma boa ideia e resolve o problema muito bem. Podemos facilmente usar o serviço depois de compreender os exemplos ilustrativos mostrados no tutorial.