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.
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
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
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
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
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]
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.