Una solució ràpida per resoldre el problema amb l'ordre "systemctl" i la introducció d'algunes alternatives eficients
systemctl
sent una utilitat important a l'ecosistema Linux, és molt comú que us trobeu amb un error "systemctl: command not found" quan intenteu executar el systemctl
comandament. Pot ser que no sigui el cas de totes les distribucions de Linux, però probablement us trobeu amb aquest error quan feu servir una versió anterior de la distribució de Linux que no admet el systemctl
comandament.
El problema que se us passa és un problema molt comú i es pot solucionar fàcilment. Per tant, no us preocupeu gens i només heu de seguir el tutorial complet per trobar una solució ràpida i senzilla.
Primer intentarem entendre el problema i després solucionar-lo.
Insights en systemctl
i systemd
Com que l'error és en referència al systemctl
comanda, seria bo conèixer els conceptes bàsics d'aquesta comanda per entendre millor la solució d'aquest error.
systemctl
és una utilitat de línia d'ordres que ofereix Linux, que s'utilitza per supervisar i controlar una altra utilitat de línia d'ordres anomenada "systemd
‘. També inspecciona i controla el gestor del sistema juntament amb el 'systemd
'utilitat.
Sintaxi general:
systemctl [opció] [nom]
systemd
és un conjunt de dimonis, biblioteques i utilitats que controla els programes que s'executen quan s'engega el sistema. systemd
també aconsegueix iniciar una tasca important com començar un diari de l'activitat del sistema.
Aquesta utilitat funciona com a utilitat de gestió central per a la majoria, si no tots, dels sistemes operatius basats en Linux.
Causa arrel de l'error
La causa més probable d'aquest error pot ser que utilitzeu una versió anterior de la distribució Linux. Moltes de les versions anteriors utilitzen el SysV init
en lloc de la systemd
utilitat.
systemd
La utilitat està absent a les versions anteriors de Linux, ja que és una incorporació recent a la cistella d'utilitats proporcionades per Linux. systemctl
és compatible per funcionar i monitoritzar amb el systemd
utilitat i no funcionarà amb les configuracions anteriors com SysV
init
o Arribada
.
Si no estàs utilitzant systemd
, llavors s'espera aquest error. És tan senzill i directe com això.
Podeu trobar aquest error de la següent manera.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] contrasenya per a gaurav: sudo: systemctl: l'ordre no s'ha trobat gaurav@ubuntu:~$
Aquí, hem intentat iniciar l'Ubuntu Fire Wall (ufw
) utilitzant el systemctl
i s'ha trobat amb l'error "systemctl: command not found".
Aleshores, què fer ara si no voleu canviar la vostra distribució de Linux actual que utilitza alguna altra utilitat de gestió central que no sigui systemd
? Bé, tenim una solució ràpida per a vosaltres que us permetria mantenir la vostra distribució de Linux actual i corregir el vostre error en poc temps.
Observem ara la correcció.
S'està solucionant l'error "systemctl: comanda no trobat".
Finalment, vegem ara la solució del problema en qüestió després d'analitzar les causes i fets bàsics sobre el problema.
Solució 1: substitució systemctl
amb servei
comandament
Una solució senzilla per a l'error en qüestió és utilitzar el servei
comanda en lloc de l'error que causa systemctl
comandament.
servei
L'ordre ajuda a executar el SystemV init
script que utilitzen les distribucions de Linux més antigues. Si no voleu instal·lar el systemd
utilitat al vostre sistema, aquesta solució segurament us funcionarà.
Podeu iniciar, reiniciar o aturar qualsevol servei i dimoni de la vostra distribució de Linux mitjançant el servei
comandament.
El servei
comandament i el systemctl
de la mateixa manera, l'única diferència aquí és la compatibilitat de l'ordre amb les utilitats responsables del bon funcionament del vostre sistema.
Anem a veure el servei
comanda amb una il·lustració.
Sintaxi general:
servei sudo [nom_servei] [acció]
En la sintaxi anterior, el [acció]
l'espai pot incloure accions com començar
, Atura
, reinicia
o estat
.
Executarem la mateixa comanda per iniciar el ufw
servei utilitzant el servei
comandament.
sudo service ufw start
Sortida:
gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Tallafocs sense complicacions Carregat: carregat (/lib/systemd/system/ufw.service; activat; predefinit del proveïdor: enab Active: actiu (sortida) des del dl. 28/09/2020 a les 11:22:34 IST; fa 1 h 5 minuts Documents: man:ufw(8) Procés: 333 ExecStart=/lib/ufw/ufw-init inici silenciós (codi=sortit, estat =0/SU PID principal: 333 (codi=sortit, estat=0/ÈXIT) 28 de setembre 11:22:34 ubuntu systemd[1]: s'ha iniciat el tallafoc sense complicacions. Avís: el diari s'ha girat des que es va iniciar la unitat. La sortida del registre és incomplet
Aquí, el servei
s'utilitza l'ordre en lloc de systemctl
comanda i va funcionar absolutament bé.
Vegem-ne un exemple més servei
ordre per entendre'l correctament.
sudo service apache2 start
Sortida:
gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - El servidor HTTP Apache carregat: carregat (/lib/systemd/system/apache2.service; activat; predefinit del proveïdor: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Actiu: actiu (en execució) des del dilluns 28/09/2020 11:22:47 IST; fa 1 h 16 minuts Procés: 1172 ExecStart=/usr/sbin/apachectl start (codi= sortit, status=0/SUCCE PID principal: 1248 (apache2) Tasques: 55 (límit: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─/usr/1249 sbin/apache2 -k start └─1250 /usr/sbin/apache2 -k start 28 de setembre 11:22:43 ubuntu systemd[1]: s'està iniciant el servidor HTTP Apache... 28 de setembre 11:22:47 ubuntu apachectl[1172 ]: AH00112: Advertiment: DocumentRoot [/var/www 28 de setembre 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: No s'ha pogut detectar de manera fiable el 28 de setembre 11:22:47 ubuntu systemd[1]: HTTP va iniciar Servidor. gaurav@ubuntu:~$
Hem utilitzat el servei
comanda per iniciar la utilitat apache2. Utilitzant el estat
opció amb el servei
La comanda mostrarà l'estat actual del servei. Tindrem els detalls de si està en execució o està mort (inactiu).
Utilitzem ara el Atura
acció per aturar el servei apache2 utilitzant el servei
comandament.
gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 línies d'estat 1--1...s'omet... ● apache2.service - El servidor HTTP Apache carregat: carregat (/lib/systemd/ system/apache2.service; activat; opció predeterminada del proveïdor: activat) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Actiu: inactiu (mort) des del dilluns 28/09/2020 12 :42:06 IST; Fa 1 s Procés: 4928 ExecStop=/usr/sbin/apachectl stop (codi=sortit, status=0/SUCCESS) Procés: 1172 ExecStart=/usr/sbin/apachectl start (code=exit, status=0/SUCCESS) PID principal : 1248 (codi=sortit, estat=0/ÈXIT) 28 de setembre 11:22:43 ubuntu systemd[1]: s'està iniciant el servidor HTTP Apache... 28 de setembre 11:22:47 ubuntu apachectl[1172]: AH00112: Avís : DocumentRoot [/var/www/html] no existeix 28 de setembre 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: No s'ha pogut determinar de manera fiable el nom de domini totalment qualificat del servidor mitjançant ::1. Estableix el 'S 28 de setembre 11:22:47 ubuntu systemd[1]: s'ha iniciat el servidor HTTP Apache.
A partir dels exemples detallats explicats anteriorment, podem concloure que podem utilitzar aquesta ordre en lloc de systemctl
comanda per controlar i supervisar altres dimonis i serveis sota la distribució Linux.
Solució 2: comprovant systemd
paquet
De vegades pot donar-se el cas que només el systemd
la instal·lació del paquet pot solucionar el problema. En primer lloc, heu de comprovar l'estat de la instal·lació systemd
paquet al vostre sistema.
Utilitzeu l'ordre següent per comprovar el paquet al vostre sistema.
sudo dpkg -l | grep systemd
Si el systemd
La utilitat ja està instal·lada, obtindreu una sortida semblant a la que es mostra a continuació.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] contrasenya per a gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 sistema simple de missatgeria entre processos (systemd --user integration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss dinàmic Resolució de noms d'usuari i grup ii libpam-systemd:amd64 237-3ubuntu10.42 Gestor de serveis i sistemes amd64 - Mòdul PAM ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd utility library ii libsystemd0:i386 237-34d2untu utility library ii ii networkd-dispatcher 1.7-0ubuntu3.3 tot el servei Dispatcher per a canvis d'estat de connexió systemd-networkd ri python3-systemd 234-1build1 amd64 Enllaços Python 3 per a systemd ii systemd 237-3ubuntu10.42 amd64 systemd-systemd-ysv ii 3ubuntu10.42 amd64 gestor de serveis i sistema - Enllaços SysV gaurav@ubuntu:~$
Si obteniu una sortida semblant a aquesta, vol dir que systemd
està instal·lat al vostre sistema.
Si no està instal·lat, podeu instal·lar-lo de la següent manera.
sudo apt-get update
sudo apt-get install systemd
Si està instal·lat i encara l'error persisteix, proveu de tornar-lo a instal·lar amb l'ordre següent.
sudo apt-get install --reinstall systemd
Això solucionarà el vostre problema instal·lant el systemd
utilitat.
Conclusió
Hem après a corregir l'ordre "systemctl: no s'ha trobat" en aquest tutorial. Podem concloure amb seguretat que utilitzant el servei
comanda en lloc de systemctl
és una bona idea i resol molt bé el problema. Podem utilitzar fàcilment el servei
comanda després d'entendre els exemples il·lustratius que es mostren al tutorial.