Sconto del 50%. tutti i piani, tempo limitato. A partire da $2.48/mo
7 minuti rimasti
Server e sistema operativo

Come risolvere systemctl: errore comando non trovato su Ubuntu

Nick Argento By Nick Argento 7 minuti di lettura Aggiornato il 20 febbraio 2025
come risolvere systemctl: comando non trovato

Uno degli strumenti più potenti e utili per gli utenti Linux, in particolare per le distribuzioni moderne come Ubuntu, è il comando systemctl. Questa utilità della riga di comando viene in genere utilizzata per interagire con systemd, il sistema e il gestore del servizio.

Tramite il comando è possibile gestire i servizi di sistema, visualizzarne lo stato, avviarli o interromperli e abilitarli e disabilitarli all'avvio del sistema. Abbastanza utile, vero? Ma se il comando systemctl non viene trovato o riconosciuto, dovrai affrontare il problema “sudo:systemctl: comando non trovato” errore.

Quindi, parliamo di cosa significa l'errore "systemctl: comando non trovato", dei vari motivi per cui stai riscontrando questo errore e come risolverlo.

Cosa significa systemctl: comando non trovato?

In poche parole, l'errore "systemctl: comando non trovato" significa che l'utilità della riga di comando systemctl non è disponibile o accessibile nell'ambiente corrente. Ciò può essere dovuto a una serie di ragioni, tutte riconducibili al fatto che l'ambiente non è di sistema o che il pacchetto systemd non è installato sul sistema.

Fondamentalmente, il pacchetto systemd non è installato oppure la tua distribuzione o versione Linux non utilizza systemd; piuttosto, utilizza sistemi di gestione dei servizi più vecchi come init.d. Un'altra possibilità è che la variabile d'ambiente PATH non includa la directory in cui si trova systemctl, il che significa che la tua shell non riesce a trovarla.

Ora che hai un'idea di cosa potrebbe esserci di sbagliato nel tuo sistema, che porta all'errore "systemctl: comando non trovato", diamo un'occhiata a come puoi verificare dove si trova il tuo problema e come risolverlo.

Correzione del systemctl: errore comando non trovato

Nei passaggi seguenti, verificheremo se il tuo sistema ha systemd installato e utilizza systemctl o meno, oltre a controllare il percorso di systemctl. Una volta verificato il problema, adotteremo le misure necessarie per correggere l'errore.

1. Verifica se il tuo sistema utilizza systemd

Poiché Ubuntu systemctl può essere utilizzato solo se hai installato il pacchetto systemd, controlleremo prima se il tuo sistema dovrebbe utilizzare systemd eseguendo il seguente comando:

ps -p 1 -o comm=

Oppure puoi controllare la versione di systemd con il seguente comando:

systemd --version

Se l'output è systemd, allora systemd è il tuo sistema init e dovrebbe avere Ubuntu systemctl installato. Tuttavia, se l'output è init o un altro gestore di processi, significa che il tuo sistema sta utilizzando un sistema di inizializzazione alternativo e systemctl non funzionerà a meno che non migri a systemd.

Se vedi sistemi di inizializzazione più vecchi come Upstart o SysVinit e desideri passare a systemd per utilizzare systemctl, segui questi passaggi:

1. Installa systemctl installando systemd utilizzando il seguente comando:

sudo apt install systemd-sysv

2. Riavvia il sistema eseguendo questo comando:

sudo reboot

3. Verifica che il tuo sistema stia ora utilizzando systemd:

ps -p 1 -o comm=

L'output dovrebbe essere systemd ora.

2. Assicurarsi che systemd sia installato correttamente

In circostanze normali, quando systemd è installato ed è in esecuzione come sistema init, il comando systemctl dovrebbe funzionare correttamente. In caso contrario, significa che il pacchetto systemd è mancante o installato in modo errato.

Tieni presente che se stai utilizzando una versione minima di Ubuntu, come un contenitore Docker o un'istanza cloud, systemd potrebbe non essere stato installato per impostazione predefinita. Per installare systemctl tramite l'installazione di systemd, eseguire i seguenti comandi:

sudo apt update
sudo apt install systemd

Una volta installato, controlla se il comando systemctl è disponibile.

3. Controllo del PERCORSO di systemctl

Un problema comune con l'errore systemctl non trovato è che systemctl potrebbe essere installato, ma non è nel PERCORSO del sistema. Per verificare se i binari di systemd esistono o meno nelle directory tipiche in cui si trovano, come /bin, /usr/bin o /usr/local/bin, puoi utilizzare il seguente comando:

which systemctl

Se systemctl viene trovato in una qualsiasi delle directory elencate in PATH, dovresti ottenere un output come questo:

/usr/bin/systemctl

Se systemctl non viene trovato in nessuna delle directory del PATH, il comando which non restituirà nulla.

Tuttavia, systemctl potrebbe non funzionare anche se si trova nelle tue directory. Questo perché systemctl potrebbe trovarsi in una directory non inclusa nel PERCORSO. In questa situazione, dovrai verificare se la directory in cui si trova systemctl fa parte del tuo sistema utilizzando il seguente comando:

echo $PATH

L'output dovrebbe essere qualcosa del genere:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ora, tutto ciò che devi fare è verificare se la directory in cui risiede systemctl (che hai ottenuto dal comando which) è inclusa nelle directory elencate nell'output del comando echo $PATH.

Se la directory di systemctl non è inclusa nell'output di echo $PATH, dovrai aggiungerla alla variabile PATH. Per fare ciò, dovrai eseguire il seguente comando:

Per Utenti della shell Bash, apri il file ~/.bashrc in un editor di testo:

nano ~/.bashrc

Aggiungi la seguente riga alla fine del file:

export PATH=$PATH:/usr/bin

/usr/bin è una directory tipica in cui si trova systemctl in questo esempio.

Ora salva e chiudi il file premendo CTRL + X, quindi Y per confermare e Invio per salvare.

Per Utenti Zsh, Apri il file ~/.zshrc in un editor di testo:

nano ~/.zshrc

Aggiungi la seguente riga alla fine del file:

export PATH=$PATH:/usr/bin

/usr/bin è una directory tipica in cui si trova systemctl in questo esempio.

Ora salva e chiudi il file premendo CTRL + X, quindi Y per confermare e Invio per salvare.

Una volta terminati i passaggi precedenti, utilizza il comando echo $PATH per verificare se la directory systemctl è stata aggiunta al tuo PATH. Ora dovresti essere in grado di eseguire systemctl senza incorrere nell'errore "systemctl: comando non trovato".

4. Reinstallazione di systemd

Se le soluzioni precedenti non funzionano e riscontri ancora l'errore comando non trovato, reinstallare completamente systemd potrebbe risolvere il problema. Per fare ciò, esegui i seguenti comandi:

sudo apt purge systemd
sudo apt install systemd

Quindi riavvia il sistema con questo comando:

sudo reboot

Controlla se systemctl funziona.

5. Verificare che systemd sia configurato correttamente

A volte, il problema potrebbe essere semplice come un'installazione non configurata correttamente di systemd, che risulta in un errore "systemctl: comando non trovato". Tutto quello che devi fare per risolvere questo problema è eseguire il seguente comando e il gioco è fatto:

sudo dpkg-reconfigure systemd

6. Sottosistema Windows per Linux (WSL) obsoleto

Nella remota possibilità che tu stia utilizzando Ubuntu con WSL (sottosistema Windows per Linux) dovresti sapere che le versioni precedenti di WSL, come WSL 1, non supportano nativamente systemctl, quindi non importa quale delle correzioni precedenti utilizzi, non sarai in grado di eseguire systemctl.

Se vuoi sfruttare le funzioni di systemctl, dovrai eseguire l'aggiornamento a WSL 2, che ha un supporto migliore per systemd. Se non sei sicuro di utilizzare o meno WSL, puoi verificare utilizzando il seguente comando:

uname -a

Se l'output menziona WSL, è per questo che viene visualizzato l'errore "systemctl: comando non trovato".

7. Utilizzo del servizio sudo come alternativa a systemctl

Se stai riscontrando l'errore "systemctl: comando non trovato" perché il tuo sistema non utilizza systemd, puoi utilizzare il comando sudo service per gestire i servizi. Questo comando funziona con i sistemi init più vecchi come SysVinit o Upstart. Ciò è utile per i sistemi Ubuntu che si basano sugli script init anziché su systemd.

Ad esempio, per avviare un servizio, dovresti eseguire:

sudo service <service_name> start

Considerazioni finali

systemd e la sua utility da riga di comando systemctl hanno sostituito la maggior parte degli altri vecchi sistemi init come SysVinit e Upstart. Anche se systemd potrebbe non essere adatto a tutti a causa del suo design monolitico e della filosofia non Unix, systemd è ancora generalmente considerato la scelta prevalente. Quindi, si spera, sei stato in grado di risolvere il tuo errore systemctl comando non disponibile, poiché non essere in grado di utilizzare l'utilità della riga di comando di systemd limita gravemente le sue capacità.

Domande frequenti

Che cosa è systemctl e cosa significa systemctl: comando non trovato?

systemctl è uno strumento da riga di comando utilizzato per gestire i servizi nei sistemi Linux che eseguono systemd, come Ubuntu. L'errore "systemctl: comando non trovato" si verifica quando lo strumento non è disponibile o accessibile, solitamente perché il sistema non utilizza systemd o il pacchetto systemd non è installato.

systemctl è disponibile su tutte le versioni di Ubuntu?

No, systemctl non è disponibile su tutte le versioni di Ubuntu. systemctl fa parte del sistema systemd init, che è l'impostazione predefinita nella maggior parte delle moderne versioni di Ubuntu (dalla 15.04 in poi). Le versioni precedenti o alcune installazioni minime possono invece utilizzare sistemi init alternativi come SysVinit o Upstart.

Condividere

Altro dal blog

Continua a leggere.

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud Immagine di copertina con pannelli delle app attorno a un dashboard Cosmos.
Server e sistema operativo

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: file, contenuti multimediali, password, automazione e altro!

Forse hai configurato Cosmos Cloud e ora vuoi vedere quali app si adattano bene ad esso, o forse non hai ancora deciso su Cosmos e vuoi solo vedere se si adatta bene al tuo ambiente di lavoro.

Nick ArgentoNick Argento 16 minuti di lettura
Copertina di Portainer e Cosmos Cloud per la gestione delle app Docker con diagramma di configurazione ibrida e operazioni al neon e blocchi di accesso.
Server e sistema operativo

Portainer vs Cosmos Cloud: la soluzione migliore per la gestione delle app Docker

Se conosci già Docker e desideri semplicemente un modo più semplice per eseguire uno stack di app in crescita, ecco la risposta breve a Portainer vs Cosmos Cloud. Portainer è la scelta più forte per direc

Nick ArgentoNick Argento 14 minuti di lettura
Cosmos Cloud vs CasaOS vs Umbrel presenta un grafico che mostra tre percorsi self-hosted all'interno di un mondo astratto di rete cloud.
Server e sistema operativo

Cosmos Cloud vs CasaOS vs Umbrel: quale piattaforma self-hosted si adatta alla tua configurazione?

La risposta breve è che CasaOS è ancora il punto di partenza più semplice, Umbrel ha l'atmosfera più pulita e curata e Cosmos Cloud ha più senso quando si desidera un controllo più stretto sul dominio.

Nick ArgentoNick Argento 11 minuti di lettura

Pronti per la distribuzione? A partire da $ 2,48 al mese.

Cloud indipendente, dal 2008. AMD EPYC, NVMe, 40 Gbps. Rimborso entro 14 giorni.