50% di sconto tutti i piani, offerta a tempo limitato. A partire da $2.48/mo
7 min rimasti
Server e sistema operativo

Come Risolvere l'Errore systemctl: Command Not Found su Ubuntu

Nick Argento By Nick Argento 7 min di lettura Aggiornato 20 feb 2025
Come risolvere systemctl: comando non trovato

Uno degli strumenti più potenti e utili per gli utenti di Linux, specialmente nelle distribuzioni moderne come Ubuntu, è comando systemctl. Questo utility a riga di comando viene tipicamente usato per interagire con systemd, il sistema e il gestore dei servizi.

Con il comando puoi gestire i servizi di sistema, visualizzarne lo stato, avviarli o fermarli, e abilitarli o disabilitarli all'avvio del sistema. Piuttosto utile, vero? Ma se il comando systemctl non viene trovato o riconosciuto, incontrerai l'errore "sudo: systemctl: command not found" errore.

Vediamo cosa significa l'errore "systemctl: command not found", i vari motivi per cui lo stai riscontrando, e come risolverlo.

Cosa significa systemctl: Command Not Found?

In sostanza, l'errore "systemctl: command not found" significa che l'utility a riga di comando systemctl non è disponibile o accessibile nell'ambiente corrente. Questo può dipendere da vari motivi, tutti riconducibili a un ambiente non-system oppure al fatto che il pacchetto systemd non è installato sul sistema.

In pratica, il pacchetto systemd non è installato, oppure la tua distribuzione o versione di Linux non usa systemd, bensì sistemi di gestione dei servizi più vecchi come init.d. Un'altra possibilità è che la variabile di ambiente PATH non includa la directory dove si trova systemctl, quindi la shell non riesce a trovarla.

Ora che hai un'idea di cosa potrebbe non funzionare nel tuo sistema e causare l'errore "systemctl: command not found", vediamo come verificare dove si trova il problema e come risolverlo.

Risolvere l'errore systemctl: Command Not Found

Nei passaggi seguenti verificheremo se il tuo sistema ha systemd installato e usa systemctl, e controlleremo il percorso di systemctl. Una volta confermato il problema, prenderemo i passi necessari per risolverlo.

1. Verificare se il sistema usa systemd

Poiché systemctl in Ubuntu può essere usato solo se hai il pacchetto systemd installato, prima verificheremo se il tuo sistema deve usare systemd eseguendo il comando seguente:

ps -p 1 -o comm=

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

systemd --version

Se l'output è systemd, allora systemd è il tuo sistema di init e dovrebbe avere systemctl installato in Ubuntu. Invece, se l'output è init o un altro gestore di processi, significa che il tuo sistema usa 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 vuoi passare a systemd per usare systemctl, segui questi passaggi:

1. Installa systemctl installando systemd con il seguente comando:

sudo apt install systemd-sysv

2. Riavvia il sistema eseguendo questo comando:

sudo reboot

3. Verifica che il sistema stia ora utilizzando systemd:

ps -p 1 -o comm=

L'output dovrebbe mostrare systemd.

2. Verificare che systemd sia installato correttamente

In condizioni normali, quando systemd è installato e in esecuzione come init system, il comando systemctl dovrebbe funzionare correttamente. Se non funziona, significa che il pacchetto systemd manca o è stato installato in modo non corretto.

Se stai utilizzando una versione minimale di Ubuntu, come un container Docker o un'istanza cloud, systemd potrebbe non essere stato installato di default. Per installare systemctl installando systemd, esegui questi comandi:

sudo apt update
sudo apt install systemd

Una volta installato, verifica che il comando systemctl sia disponibile.

3. Controllare il PATH di systemctl

Un problema comune con l'errore systemctl not found è che systemctl potrebbe essere installato, ma non si trova nel PATH del sistema. Per verificare se i binari di systemd si trovano nelle directory tipiche come /bin, /usr/bin o /usr/local/bin, puoi usare questo comando:

which systemctl

Se systemctl si trova in una delle tue directory nel PATH, dovresti ottenere un output come questo:

/usr/bin/systemctl

Se systemctl non si trova in nessuna delle directory nel PATH, il comando which non restituirà nulla.

Tuttavia, systemctl potrebbe non funzionare anche se si trova nelle tue directory. Questo accade perché systemctl potrebbe trovarsi in una directory non inclusa nel PATH. In questo caso, devi verificare se la directory in cui si trova systemctl fa parte del sistema usando questo comando:

echo $PATH

L'output dovrebbe essere qualcosa del genere:

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

Ora, tutto quello che devi fare è verificare se la directory in cui si trova systemctl (quella ottenuta dal comando which) è inclusa nelle directory mostrate dall'output del comando echo $PATH.

Se la directory di systemctl non è inclusa nell'output di echo $PATH, dovrai aggiungerla alla variabile PATH. Per farlo, esegui questo 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, poi 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, poi Y per confermare e Invio per salvare.

Una volta completati i passaggi precedenti, usa il comando echo $PATH per verificare che la directory di systemctl sia stata aggiunta al tuo PATH. Ora dovresti essere in grado di eseguire systemctl senza incontrare l'errore "systemctl: command not found".

4. Reinstallazione di systemd

Se i fix precedenti non funzionano e continui a ricevere l'errore command not found, reinstallare completamente systemd potrebbe risolvere il problema. Per farlo, esegui questi comandi:

sudo apt purge systemd
sudo apt install systemd

Poi, riavvia il sistema con questo comando:

sudo reboot

Verifica che systemctl funzioni correttamente.

5. Verifica che systemd sia configurato correttamente

A volte il problema potrebbe essere una semplice configurazione errata di systemd, che genera l'errore "systemctl: command not found". Per risolvere, esegui questo comando e il problema è risolto:

sudo dpkg-reconfigure systemd

6. Versione obsoleta di Windows Subsystem for Linux (WSL)

Nel caso tu stia usando Ubuntu con WSL (Sottosistema Windows per Linux) dovresti sapere che le versioni precedenti di WSL, come WSL 1, non supportano nativamente systemctl. Indipendentemente dalla soluzione che usi, non potrai eseguire systemctl.

Per sfruttare le funzioni di systemctl, devi eseguire l'upgrade a WSL 2, che offre un supporto migliore per systemd. Se non sei sicuro quale versione usi, puoi verificare con questo comando:

uname -a

Se l'output contiene WSL, allora ecco perché vedi l'errore "systemctl: command not found".

7. Usare sudo service come alternativa a systemctl

Se ricevi l'errore "systemctl: command not found" perché il tuo sistema non usa systemd, puoi usare il comando sudo service per gestire i servizi. Questo comando funziona con i sistemi init più vecchi come SysVinit o Upstart. È utile per i sistemi Ubuntu che si basano su script init invece di systemd.

Ad esempio, per avviare un servizio, esegui:

sudo service <service_name> start

Considerazioni Finali

systemd e il suo comando systemctl hanno sostituito la maggior parte degli altri sistemi init come SysVinit e Upstart. Anche se systemd non piace a tutti a causa del suo design monolitico e della filosofia non-Unix, rimane la scelta più diffusa. Speriamo di aver risolto il tuo errore "systemctl: command not found", perché non poter usare l'utilità da riga di comando di systemd limita notevolmente le sue capacità.

Domande frequenti

Cos'è systemctl e cosa significa l'errore "systemctl: Command Not Found"?

systemctl è uno strumento da riga di comando per gestire i servizi nei sistemi Linux che eseguono systemd, come Ubuntu. L'errore "systemctl: command not found" si verifica quando lo strumento non è disponibile o accessibile, di solito perché il sistema non usa 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 init systemd, che è quello predefinito nella maggior parte delle versioni moderne di Ubuntu (dalla 15.04 in poi). Le versioni precedenti o alcune installazioni minimali potrebbero usare sistemi init alternativi come SysVinit o Upstart.

Condividi

Altro dal blog

Continua a leggere.

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: immagine di copertina con pannelli di app intorno a una dashboard Cosmos.
Server e sistema operativo

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

Dopo aver configurato Cosmos Cloud e voler vedere quali app si abbinano bene, oppure non hai ancora deciso su Cosmos e vuoi semplicemente scoprire quanto bene si adatta al tuo flusso di lavoro

Nick ArgentoNick Argento lettura di 16 minuti
Portainer vs Cosmos Cloud per la gestione di app Docker: copertina con diagramma di configurazione ibrida e diagramma di operazioni neon rispetto ai blocchi di accesso.
Server e sistema operativo

Portainer vs Cosmos Cloud: quale scegliere per la gestione di app Docker

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

Nick ArgentoNick Argento 14 minuti di lettura
Cosmos Cloud vs CasaOS vs Umbrel: grafica di confronto che mostra tre percorsi self-hosted all'interno di un'astrazione unica di rete cloud.
Server e sistema operativo

Cosmos Cloud vs CasaOS vs Umbrel: quale piattaforma self-hosted si adatta al tuo setup?

La risposta breve è che CasaOS è ancora il punto di partenza più semplice, Umbrel ha l'aspetto più curato e pulito, e Cosmos Cloud ha più senso quando vuoi un controllo più stretto sui domini

Nick ArgentoNick Argento 11 min di lettura

Pronto per il deployment? A partire da $2,48/mese.

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