Come elencare tutti i servizi in esecuzione sotto systemd in Linux
In qualità di amministratore di sistema Linux, puoi gestire molti servizi ogni giorno. In questo rapido articolo, descriveremo come elencare tutti i servizi in esecuzione su systemd su Linux. Quando si avvia un sistema Linux, molte attività in background vengono avviate come parte del processo di avvio, chiamate servizi o demoni. Queste attività in background vengono eseguite senza l’intervento dell’utente. Su alcune distribuzioni basate su systemd, systemd è il primo processo che si avvia dopo l’avvio del sistema e ha un PID di ‘1’. I dettagli dei servizi sono memorizzati in file di unità situati nel file "/usr/lib/systemd"
directory. Sarà possibile utilizzare il comando systemctl per controllare/gestire le unità systemd e le opzioni comunemente utilizzate sono avviare, arrestare, riavviare, mascherare o ricaricare un demone o un servizio.
1) Elenco dei servizi Linux con systemctl
Per visualizzare tutti i servizi in esecuzione su un sistema Linux con systemd, utilizzare il seguente comando. Questo ti mostrerà il nome, il carico, lo stato secondario e la descrizione di ogni servizio/unità attivo sull’unità in esecuzione
systemctl list-units --type=service --state=running
Per elencare tutti i servizi caricati sul sistema (attivi, in esecuzione, terminati o non riusciti), utilizzare il sottocomando list-units --type
e passare con un valore service.
systemctl list-units --type=service
E per elencare tutti i servizi caricati ma attivi, sia in esecuzione che quelli che sono usciti, puoi aggiungere l’ --state
con un valore di active, come segue.
systemctl list-units --type=service --state=active
1.1) Elenco di altri tipi di unità
Allo stesso modo, puoi vedere altri tipi di unità disponibili come mostrato di seguito. Tuttavia, prima dobbiamo identificare l’elenco delle unità supportate tramite il comando systemctl con l’estensione '-t'
opzione.
# systemctl -t help Available unit types: service mount swap socket target device automount timer path slice scope
È possibile elencare tutti i tipi di unità supportati modificando '--type=(UNIT_NAME)'
in base alle vostre esigenze. Ad esempio, per elencare il ‘socket’ tipo di unità, eseguire:
# systemctl list-units --type=socket --state=running
Se vuoi controllare tutte le unità in esecuzione contemporaneamente con il comando systemctl, aggiungi tutti i tipi di unità tra parentesi graffe come mostrato di seguito:
# systemctl list-units --type={service,mount,swap,socket,target,device,automount,timer,path,slice,scope} --state=running
1.2) Verifica di tutte le unità in esecuzione con systemctl
Puoi elencare tutte le unità in esecuzione filtrando il file 'running'
stringa con l’aiuto del comando grep. Il seguente comando elenca tutti i tipi di unità in esecuzione inclusi .service, .target, .socket, .mount, ecc.
# systemctl | grep -i running
Per contare tutte le unità in esecuzione, eseguire: l’output seguente, sul mio sistema sono in esecuzione complessivamente 26 unità. Questo numero di servizi in esecuzione può variare per te perché dipende dall’elenco dei pacchetti installati sul sistema.
# systemctl | grep -i running | wc -l
1.3) Filtraggio di un servizio specifico
Utilizzare il seguente comando per verificare se un particolare servizio è caricato e in esecuzione. Ad esempio, per verificare che il ‘log di sistema’ il servizio è caricato e in esecuzione, esegui: Allo stesso modo, puoi controllare qualsiasi servizio che desideri elencare.
# systemctl list-units --type=service --state=running
1.4) Verifica dello stato del servizio
Il seguente comando può essere utilizzato per visualizzare informazioni dettagliate su un particolare servizio in esecuzione. Visualizzerà molte informazioni come lo stato di esecuzione e caricamento, abilitato o meno all’avvio, posizione dell’unità di servizio, PID del processo, da quanto tempo il processo è in esecuzione, utilizzo della memoria e della CPU, ecc.
# systemctl status rsyslog ● [root@rocky-vps ~]# systemctl status rsyslog ● rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled) Active: active (running) since Mon 2023-07-24 01:33:31 CEST; 29min ago Docs: man:rsyslogd(8) https://www.rsyslog.com/doc/ Main PID: 655 (rsyslogd) Tasks: 3 (limit: 11128) Memory: 2.2M CPU: 176ms CGroup: /system.slice/rsyslog.service └─655 /usr/sbin/rsyslogd -n Jul 24 01:33:31 rocky-vps.local systemd[1]: Starting System Logging Service... Jul 24 01:33:31 rocky-vps.local rsyslogd[655]: [origin software="rsyslogd" swVersion="8.2102.0-113.el9_2" x-pid="655" x-info="https://www.rsyslog.com"] start Jul 24 01:33:31 rocky-vps.local systemd[1]: Started System Logging Service. Jul 24 01:33:31 rocky-vps.local rsyslogd[655]: imjournal: journal files changed, reloading... [v8.2102.0-113.el9_2 try https://www.rsyslog.com/e/0 ] [root@rocky-vps ~]#
Inoltre, se il tuo server ha un servizio firewall in esecuzione, 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, usando il comando 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]
Conclusione
Questo articolo ha mostrato come utilizzare i comandi systemctl per elencare tutti i servizi in esecuzione su Linux, incluse varie opzioni che mostrano ulteriori informazioni su un servizio in esecuzione.