Com solucionar l'error "No s'ha trobat l'ordre Systemctl" a Linux

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 SysVinit 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.