Il monitoraggio del sistema Linux è una delle attività più importanti che qualsiasi utente Linux o amministratore di sistema deve svolgere 24 ore su 24 per garantire che il sistema funzioni senza intoppi ed evitare colli di bottiglia. Linux viene fornito con alcuni strumenti integrati che possono aiutarti a monitorare il tuo sistema. Uno di questi è ps (stato processi ) comando che monitora in modo specifico i processi in esecuzione e tra le altre metriche associate ai processi come percentuale CPU e memoria utilizzazione. Il comando ps legge il filesystem /proc che è basato sulla RAM o un file system virtuale.
In questa guida, ci addentriamo più a fondo e ti presentiamo 20 dei comandi ps più comunemente usati.
1) Processo di quotazione nella shell
La forma più semplice del comando ps in Linux, elenca i processi in esecuzione nella shell corrente. Questo può essere illustrato di seguito.
[[email protected] ~]$ ps PID TTY TIME CMD 1437 pts/0 00:00:00 bash 1465 pts/0 00:00:00 ps [[email protected] ~]$
Definiamo alcuni termini:
- PID:questo è l'ID processo.
- TTY:si riferisce al terminale che ha avviato e controlla il processo.
- TIME:questo è il tempo/tempo cumulativo per cui è stato eseguito un processo.
- CMD:nome del comando che ha avviato il processo.
2) Processi di elenco associati a un terminale
Questo è molto simile all'elenco dei processi nella shell. Per elencare i processi associati al terminale attualmente in esecuzione, eseguire il comando:
[[email protected] ~]$ ps -T PID SPID TTY TIME CMD 1437 1437 pts/0 00:00:00 bash 13357 13357 pts/0 00:00:00 ps [[email protected] ~]$
3) Visualizzazione di tutti i processi in esecuzione sul tuo sistema
Per avere una panoramica di tutti i processi in esecuzione sul tuo sistema Linux usa il -A flag come mostrato:
[[email protected] ~]$ ps -A
In alternativa, puoi anche utilizzare il –e flag come mostrato. Otterrai comunque risultati simili.
[[email protected] ~]$ ps -e
4) Visualizzazione dell'output in formato BSD
Per elencare i processi in formato BSD, esegui il comando
$ ps -aux
Analizziamo il comando:
Il flag -a indica a ps di visualizzare tutti i processi di tutti gli utenti. Questo, tuttavia, esclude i processi associati a un terminale specifico.
Il flag -u implica un formato orientato all'utente. Fornisce informazioni più dettagliate associate ai processi in esecuzione.
Il flag x elenca i processi che di solito vengono avviati all'avvio del sistema così come i processi in background.
Dove:
- USER – Specifica l'utente che esegue il processo
- PID – Questo è l'ID processo del processo
- %CPU – Questa è la percentuale di utilizzo della CPU di ciascun processo
- %MEM – Questa è la % della memoria fisica utilizzata dal processo
- VSZ – Questa è la dimensione della memoria virtuale di ogni processo in kilobyte
- RSS:questa è la dimensione/quantità di memoria fisica utilizzata da un processo
- STAT:indica il codice di stato del processo, ad esempio S (inattivo), Z (zombie) e R (in esecuzione)
- START – Questa è l'ora in cui il processo ha iniziato a essere eseguito
5) Visualizzazione dell'output in formato UNIX
Se desideri visualizzare l'output in formato UNIX , esegui il comando ps con una combinazione di -ef bandiere
[[email protected] ~]$ ps -ef
Il flag -e dice al comando ps di elencare tutti i processi
Il flag -f (formato completo) indica al comando ps di elencare informazioni dettagliate sui processi.
Definiamo alcuni nuovi termini dallo screenshot:
- PPID:si riferisce all'ID processo padre
- C:si riferisce alla %CPU o alla percentuale di utilizzo della CPU di un processo.
- STIME:indica l'ora in cui è stato avviato il comando. Come START
6) Visualizzazione dell'output in un formato definito dall'utente
In un output di formato definito dall'utente, hai il potere di decidere quali colonne visualizzare. La bandiera-o determina quali colonne verranno visualizzate durante l'esecuzione del comando ps. Nell'esempio seguente, solo il PID e AVVIO vengono visualizzate le colonne. Assicurati di notare che le opzioni delle colonne sono passate in minuscolo nel comando ps.
[[email protected] ~]$ ps -efo pid,start PID STARTED 1437 21:55:28 13632 01:41:16 [[email protected] ~]$
7) Mostra i processi in esecuzione di un utente
A volte, potresti voler scoprire i processi associati a un determinato utente, quindi per ottenere ciò, usa il -u flag come mostrato”
$ ps -u utente
O
$ ps -u uid
Ad esempio, per visualizzare i processi associati all'utente 'Linuxtechi' eseguire il comando:
$ ps -u linuxtechi
In alternativa, è possibile utilizzare l'uid dell'utente (ID utente). Puoi ottenere l'ID utente eseguendo il comando:
$ id utente
[[email protected] ~]$ id linuxtechi uid=1000(linuxtechi) gid=1000(linuxtechi) groups=1000(linuxtechi),10(wheel) [[email protected] ~]$
Dall'output sopra, possiamo vedere chiaramente che l'uid per l'utente 'linuxtechi' è 1000. È quindi possibile utilizzare il comando ps e l'uid per trovare i processi associati all'utente.
$ ps -u 1000
Per l'utente root, esegui il comando
$ ps -u root
Allo stesso modo, puoi controllare usando l'uid dell'utente root il cui valore è 0
$ ps -u 0
8) Visualizzazione dei processi di gruppo
Elencare i processi di gruppo è simile all'elencare i processi utente. Puoi elencare un processo di gruppo usando il comando ps passando il nome del gruppo specificando l'ID del gruppo.
Ad esempio, per visualizzare i processi associati al gruppo 'apache' eseguire il comando:
$ ps -fG
$ ps -fG apache
In alternativa, puoi passare l'ID del gruppo (gid) invece del nome del gruppo. puoi ottenere i GID dal file /etc/group.
Ad esempio, in questo caso, l'ID del gruppo per Apache è 48. Quindi, invece di specificare il nome del gruppo "apache ' è sufficiente specificare il GID n. 48.
$ ps -fG 48
9) Visualizzazione dei processi utilizzando PID e PPID
I processi Linux possono anche essere visualizzati utilizzando il PID (ID processo ) e il PPID (ID processo padre) . Il PPID si riferisce al PID del genitore di un processo.
Per elencare i processi per PID, esegui
$ ps -fp PID
Ad esempio, per elencare i processi associati al PID 1286 eseguire il comando:
[[email protected] ~]$ ps -fp 1286 UID PID PPID C STIME TTY TIME CMD postfix 1286 1285 0 03:49 ? 00:00:00 pickup -l -t unix -u [[email protected] ~]$
Per elencare i processi in base al PPID, esegui
$ ps -f –ppid
Ad esempio, per elencare i processi di proprietà di PPID 31903 eseguito
$ ps -f --ppid 31903
10) Ricerca di un PID utilizzando il nome del processo
Per la maggior parte del tempo di solito non conosciamo il PID del nome del processo. Per farlo, usa il flag-C come mostrato
$ ps -C
[[email protected] ~]$ ps -C firefox PID TTY TIME CMD 1446 tty2 00:00:04 firefox [[email protected] ~]$
11) Visualizzazione del processo tramite TTY
Se desideri filtrare i processi in base al valore tty, usa il -t flag . Ad esempio, per visualizzare i processi collegati a tty1, eseguire il comando ps come mostrato:
$ ps -ft tty1
12) Stampa dell'albero dei processi
Un albero dei processi mostra come i processi sono collegati in un sistema Linux. I processi senza genitori si collegano al sistema tramite init o systemd. La stampa richiede l'utilizzo del seguente formato:
$ ps -e --forest
13) Filtra un processo in base al processo del thread
Per filtrare un processo utilizzando il thread del processo, utilizza il flag-L come mostrato,
$ ps -L 1446
14) Monitoraggio dei processi in tempo reale
È possibile utilizzare l'utilità watch per monitorare le informazioni statiche su un processo. L'uscita viene riprodotta ogni secondo come mostrato di seguito
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head'
Il comando stampa le colonne pid,ppid,cmd,%mem e %cpu e monitora le statistiche ogni singolo secondo mentre ordina l'%utilizzo della CPU in ordine decrescente.
15) Risoluzione dei problemi di prestazioni della macchina Linux
Quando il tuo sistema è lento o sovraccarico, puoi identificare il processo più in esecuzione in base al massimo utilizzo di CPU e memoria
Esegui il seguente comando ps per elencare i processi principali che stanno consumando memoria elevata,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Esegui il seguente comando ps per elencare i processi principali che stanno consumando una CPU elevata,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
L'output di esempio del comando ps precedente sul mio sistema è riportato di seguito,
16) Eliminazione dei processi che non rispondono
Il comando ps può consentire di uccidere le applicazioni che non rispondono o qualsiasi processo che sta monopolizzando CPU e RAM. Per fare ciò, devi trovare il PID di quella particolare applicazione usando il comando:
$ ps -A | grep -i stress
Una volta trovato il PID del processo, puoi terminarlo usando il comando kill, l'esempio è mostrato di seguito,
$ kill -9 2583 2584
17) Elenca tutti i PID di tutte le istanze di processo
Puoi elencare tutti i PID associati a un processo utilizzando la sintassi:
$ ps -C
Ad esempio, per scoprire i PID associati al server Web httpd esegui:
$ ps -C httpd -o pid=
18) Visualizza la durata dell'esecuzione dei processi
Per mostrare da quanto tempo i processi sono in esecuzione, esegui il comando:
$ ps -eo comm,etime,user
Usa il comando ps di seguito per sapere da quanto tempo è in esecuzione un particolare processo,
$ ps -o tempo -p
Supponiamo di voler conoscere il processo di MySQL
[[email protected] ~]$ ps -C mysqld -o pid= 3807 [[email protected] ~]$ [[email protected] ~]$ ps -o etime -p 3807 ELAPSED 01:13:56 [[email protected] ~]$
19) Elenca i processi figlio di un processo
Per stampare o elencare i processi figlio di un processo, usa -C flag nella sintassi seguente:
$ ps -C
Ad esempio, per elencare i processi figlio associati al processo httpd, esegui
[[email protected] ~]$ ps -C httpd PID TTY TIME CMD 31911 ? 00:00:00 httpd 31918 ? 00:00:00 httpd 31919 ? 00:00:00 httpd 31920 ? 00:00:01 httpd 31921 ? 00:00:01 httpd 31922 ? 00:00:01 httpd [[email protected] ~]$
20) Filtraggio dell'output del comando ps utilizzando grep
Per ottenere risultati specifici nel comando ps , puoi reindirizzare l'output allo strumento di utilità grep e fornire i criteri di ricerca.
Ad esempio , per cercare o restringere il processo php, esegui il comando:
$ ps -ef | grep php
Abbiamo elencato i primi 20 comandi ps comunemente usati per elencare e monitorare i processi in esecuzione sul tuo sistema Linux. Questi comandi funzioneranno su tutte le distribuzioni Linux e ti daranno sicuramente una panoramica dei processi in esecuzione sul tuo sistema e ti aiuteranno a determinare quali stanno sovraccaricando le tue risorse di CPU e RAM. Hai trovato questa guida perspicace? Sentiti libero di mettere mi piace e condividerlo sulle tue piattaforme di social media. Il tuo feedback è molto gradito.
Leggi anche :25 esempi di comandi principali per monitorare le prestazioni dei server Linux