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 SysV
iniciar
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.