Ricerca nel sito web

Come elencare tutti i servizi in esecuzione sotto Systemd in Linux


I sistemi Linux forniscono una varietà di servizi di sistema (come gestione dei processi, login, syslog, cron, ecc.) e servizi di rete (come login remoto, e-mail, stampanti, web hosting, archiviazione dati , trasferimento file, risoluzione dei nomi di dominio (tramite DNS), assegnazione dinamica dell'indirizzo IP (tramite DHCP) e molto altro).

Tecnicamente, un servizio è un processo o un gruppo di processi (comunemente noti come demoni) in esecuzione continuamente in background, in attesa dell'arrivo di richieste (soprattutto dai client).

Linux supporta diversi modi per gestire i servizi (avviare, arrestare, riavviare, abilitare l'avvio automatico all'avvio del sistema, ecc.), in genere tramite un gestore di processi o servizi. La maggior parte, se non tutte, le moderne distribuzioni Linux ora utilizzano lo stesso gestore di processi: systemd.

Cos'è Systemd?

Systemd è un gestore di sistemi e servizi per Linux; un sostituto immediato del processo init, che è compatibile con gli script init SysV e LSB e il comando systemctl è lo strumento principale per gestire systemd.

Perché elencare i servizi in esecuzione in Linux?

Conoscere i servizi in esecuzione sul tuo sistema Linux è vitale per diversi motivi. Consente di monitorare l'utilizzo delle risorse, risolvere i problemi e gestire le prestazioni del sistema in modo efficiente. Systemd semplifica questo compito offrendo potenti comandi per raccogliere informazioni sui servizi attivi.

In questa guida dimostreremo il processo di elenco di tutti i servizi in esecuzione su Systemd in Linux, fornendo una guida completa per utenti di tutti i livelli di esperienza.

Elenco dei servizi in esecuzione in SystemD in Linux

Quando esegui il comando systemctl senza argomenti, verrà visualizzato un elenco di tutte le unità systemd caricate (leggi la documentazione di systemd per maggiori informazioni sulle unità systemd) inclusi i servizi, mostrando il loro stato (attivo o meno ).

systemctl 

Elenca tutte le unità in systemctl

Per elencare tutti i servizi caricati sul tuo sistema (attivi, in esecuzione, terminati o non riusciti, utilizza il sottocomando list-units e l'opzione --type con il valore service.

systemctl list-units --type=service
OR
systemctl --type=service

E per elencare tutti i servizi caricati ma attivi, sia in esecuzione che quelli che sono usciti, puoi aggiungere l'opzione --state con un valore active, come segue.

systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

Elenca i servizi in esecuzione in systemctl

Ma per dare una rapida occhiata a tutti i servizi in esecuzione (ovvero tutti i servizi caricati e attivamente in esecuzione), esegui il comando seguente.

systemctl list-units --type=service --state=running 
OR
systemctl --type=service --state=running

Esploriamo i termini chiave relativi alle unità Systemd e il loro stato:

  • Unità: un'unità potrebbe essere un servizio, una presa, un dispositivo o varie altre entità.
  • Carica – Indica se l'unità è caricata o meno. Un'unità può essere caricata ma non necessariamente attiva.
  • Attivo: mostra se l'unità è attivamente in esecuzione o se ha riscontrato problemi ed è in uno stato guasto o inattivo.
  • SUB – Fornisce dettagli aggiuntivi sullo stato specifico dell'unità. Per i servizi, potrebbe indicare se il servizio è in esecuzione (in esecuzione), arrestato (uscitato) o sta riscontrando problemi (non riuscito).
  • Descrizione: aiuta gli utenti a identificare e comprendere lo scopo dell'unità senza approfondire i file di configurazione dettagliati.

Crea un alias per systemctl

Se usi frequentemente il comando precedente, puoi creare un comando alias nel tuo file ~/.bashrc come mostrato, per invocarlo facilmente.

vim ~/.bashrc

Quindi aggiungi la seguente riga sotto l'elenco degli alias come mostrato nello screenshot.

alias running_services='systemctl list-units  --type=service  --state=running'

Salvare le modifiche nel file e chiuderlo. Da ora in poi, utilizza il comando "running_services" per visualizzare un elenco di tutti i servizi caricati e attivamente in esecuzione sul tuo server.

running_services	#use the Tab completion 

Trova una porta su cui è in ascolto un processo

Inoltre, un aspetto importante dei servizi è il porto che utilizzano. Per determinare la porta su cui è in ascolto un processo daemon, puoi utilizzare il comando netstat o ss come mostrato.

Dove il flag -l significa stampare tutti i socket in ascolto, -t mostra tutte le connessioni TCP, -u mostra tutte le connessioni UDP, - n significa stampare numeri di porta numerici (invece dei nomi delle applicazioni) e -p significa mostrare il nome dell'applicazione.

netstat -ltup | grep zabbix_agentd
OR
ss -ltup | grep zabbix_agentd

La quinta colonna mostra il socket: Indirizzo locale:Porta. In questo caso, il processo zabbix_agentd è in ascolto sulla porta 10050.

Elenco dei servizi firewall in esecuzione

Inoltre, se sul tuo server è in esecuzione un servizio firewall, che controlla come bloccare o consentire il traffico da o verso servizi o porte selezionati, puoi elencare i servizi o le porte che sono stati aperti nel firewall, utilizzando firewall-cmd< o ufw (a seconda delle distribuzioni Linux che stai utilizzando) come mostrato.

firewall-cmd --list-services   [FirewallD]
firewall-cmd --list-ports

sudo ufw status     [UFW Firewall]

È tutto per ora! In questa guida abbiamo dimostrato come visualizzare i servizi in esecuzione sotto systemd in Linux. Abbiamo anche spiegato come verificare se il servizio di porta è in ascolto e come visualizzare i servizi o le porte aperte nel firewall di sistema.

Hai qualche aggiunta da fare o domande? Se sì, raggiungici utilizzando il modulo di commento qui sotto.