Problema: Visualizzare i Servizi Attivi in Linux
Gestire i servizi su un sistema Linux è un compito per amministratori e utenti. Systemctl, il comando principale per controllare systemd, offre un modo per gestire e monitorare questi servizi. Ottenere una panoramica di tutti i servizi in esecuzione può essere difficile senza conoscere i comandi e le opzioni giuste da utilizzare.
Elencare Tutti i Servizi in Esecuzione con Systemctl
Comando Base per Elencare i Servizi
Per elencare tutti i servizi gestiti da systemd, usa questo comando:
systemctl list-units --type=service
Questo comando mostra una tabella con informazioni su ogni unità di servizio. L'output include:
- UNIT: Il nome dell'unità di servizio
- LOAD: Se la definizione dell'unità è stata caricata
- ACTIVE: Lo stato di attivazione di alto livello dell'unità
- SUB: Lo stato di attivazione di basso livello dell'unità
- DESCRIPTION: Una breve descrizione dello scopo dell'unità
Per mostrare solo i servizi attivi, aggiungi l'opzione --state=active:
systemctl list-units --type=service --state=active
Filtrare per Servizi in Esecuzione
Per elencare solo i servizi in esecuzione, usa:
systemctl list-units --type=service --state=running
Questo comando filtra i servizi inattivi o falliti, mostrando solo quelli in esecuzione sul tuo sistema.
Per una vista più compatta, usa l'opzione --no-pager:
systemctl list-units --type=service --state=running --no-pager
Questo evita che l'output venga paginato, utile quando vuoi indirizzare i risultati ad altri comandi o file.
Per una rapida panoramica dei servizi in esecuzione senza dettagli extra, usa:
systemctl list-units --type=service --state=running --plain --no-legend
Questo comando rimuove le informazioni di intestazione e piè di pagina, fornendo un elenco pulito dei servizi in esecuzione.
Per contare il numero di servizi in esecuzione, indirizza l'output a wc:
systemctl list-units --type=service --state=running --plain --no-legend | wc -l
Questo comando restituirà il numero totale di servizi in esecuzione sul tuo sistema.
Suggerimento: Ordina i servizi in esecuzione per utilizzo di memoria
Per capire quali servizi stanno utilizzando più risorse, puoi ordinare i servizi in esecuzione per utilizzo di memoria. Questo può aiutare gli amministratori di sistema a ottimizzare le prestazioni del sistema.
Ecco un comando per elencare i servizi in esecuzione ordinati per utilizzo di memoria:
systemctl list-units --type=service --state=running --no-pager | awk '{print $1}' | xargs -I {} systemctl status {} | grep Memory | sort -rnk 3 | head -n 10
Questo comando:
- Elenca tutti i servizi in esecuzione
- Estrae i nomi dei servizi
- Ottiene lo stato di ogni servizio
- Filtra per la riga di utilizzo della memoria
- Ordina i risultati per utilizzo di memoria (dal più alto al più basso)
- Mostra i primi 10 servizi che consumano più memoria
L'output apparirà così:
Memory: 1.2G
Memory: 800.5M
Memory: 456.3M
Memory: 234.1M
Memory: 189.7M
Memory: 156.2M
Memory: 98.4M
Memory: 76.9M
Memory: 54.3M
Memory: 43.8M
Comandi Systemctl Avanzati per la Gestione dei Servizi
Visualizzare Informazioni Dettagliate sui Servizi
Per ottenere più informazioni su un servizio, usa il comando systemctl status seguito dal nome del servizio:
systemctl status nome_servizio
Questo comando fornisce una panoramica del servizio, inclusi:
- Stato corrente (attivo, inattivo, fallito)
- PID principale (Process ID)
- Utilizzo della memoria
- Utilizzo della CPU
- Ora di avvio
- Voci di log recenti
Esempio: Visualizzare i Dettagli del Servizio SSH
systemctl status sshd
L'output include lo stato corrente del servizio, la posizione del file di configurazione e le voci di log recenti, utili per la risoluzione dei problemi.
Controllare lo Stato del Servizio
Per controllare lo stato di un servizio, usa:
systemctl is-active nome_servizio
Questo comando restituisce "active" se il servizio è in esecuzione, o "inactive" se non lo è.
Per controllare se un servizio si avvia all'avvio:
systemctl is-enabled nome_servizio
Questo restituisce "enabled" se il servizio si avvia automaticamente all'avvio, o "disabled" se non lo fa.
Puoi anche usare il comando systemctl show per ottenere proprietà specifiche di un servizio:
systemctl show -p ActiveState nome_servizio
systemctl show -p UnitFileState nome_servizio
Questi comandi mostrano lo stato attivo corrente e se il servizio è abilitato.
Per elencare tutti i servizi falliti:
systemctl --failed --type=service
Questo comando aiuta a identificare i servizi che hanno problemi e potrebbero richiedere attenzione.
Metodi Alternativi per Elencare i Servizi
Utilizzo del Comando PS
Il comando ps offre un altro modo per elencare i servizi in esecuzione in Linux. Sebbene non sia dettagliato come systemctl, può fornire una vista rapida dei processi attivi, inclusi i servizi.
Per elencare tutti i processi in esecuzione, inclusi i servizi:
ps aux
Questo comando mostra tutti i processi per tutti gli utenti in un formato dettagliato. Per filtrare servizi specifici, puoi usare grep:
ps aux | grep nome_servizio
Per una vista focalizzata sui servizi, puoi usare:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Questo comando visualizza l'ID del processo, l'ID del processo genitore, il comando, l'utilizzo della memoria e della CPU, ordinati per utilizzo della memoria.
Rispetto a systemctl, ps fornisce:
- Informazioni sui processi in tempo reale
- Dati più dettagliati sull'utilizzo delle risorse
- La capacità di vedere processi non gestiti da systemd
Tuttavia, manca di informazioni specifiche di systemd come stati dei servizi e dipendenze.
Suggerimento: Output PS Personalizzato
Puoi personalizzare l'output di ps per mostrare solo le informazioni di cui hai bisogno. Ad esempio, per visualizzare solo il PID, il nome del comando e l'utilizzo della memoria dei processi, usa:
ps -eo pid,comm,%mem --sort=-%mem | head
Questo comando ordina i processi per utilizzo della memoria e mostra i primi 10 processi che consumano più memoria.
Utilizzo del Comando Top
Il comando top fornisce una vista dinamica e in tempo reale dei processi in esecuzione, inclusi i servizi. Per usare top:
top
Questo apre un display interattivo che mostra:
- Riepilogo del sistema (uptime, carico medio, utilizzo della CPU)
- Elenco dei processi (ordinato per default per utilizzo della CPU)
Per concentrarsi sui servizi, puoi usare:
top -c -p $(pgrep -d',' -f nome_servizio)
Questo comando mostra solo i processi relativi al servizio specificato.
Vantaggi dell'uso di top:
- Aggiornamenti in tempo reale delle informazioni di sistema e dei processi
- Interfaccia interattiva per ordinare e filtrare
- Capacità di vedere le tendenze di utilizzo delle risorse nel tempo
I limiti includono:
- Meno informazioni specifiche sui servizi rispetto a
systemctl - Potrebbe richiedere più risorse di sistema per il monitoraggio continuo
Sia ps che top completano systemctl fornendo viste diverse sui servizi e processi in esecuzione, permettendo una migliore comprensione dell'attività del sistema.
Esempio: Monitoraggio del Server Web Apache
Per monitorare il server web Apache usando top, puoi usare:
top -c -p $(pgrep -d',' -f apache2)
Questo comando mostrerà informazioni in tempo reale su tutti i processi Apache, incluso il loro utilizzo di CPU e memoria. È utile per tracciare il consumo di risorse di Apache durante periodi di alto traffico.





