Il ps è un comando integrato utilizzato nei sistemi operativi Unix/Linux per elencare i processi attualmente in esecuzione. Visualizza un'istantanea statica con informazioni sui processi mentre top, htop e sguardi mostrano aggiornamenti ripetitivi.
Il comando Ps include molte opzioni per manipolare gli output. Estrae tutte le informazioni dei processi da /proc virtual filesystem.
Questo tutorial si concentrerà sulla spiegazione del modo di utilizzare il comando ps insieme ad alcuni esempi pratici
La sintassi del comando ps
La sintassi di base per l'utilizzo del comando ps è la seguente:
$ ps [options]
Le 'opzioni' del comando ps possono essere:
- Opzioni UNIX - precedute da un trattino
- Opzioni BSD:devono essere utilizzate senza trattino
- Opzioni lunghe GNU - precedute da due trattini
Questo è un utilizzo del comando ps molto semplice. Digita semplicemente 'ps' sulla tua console per vedere il risultato:
$ ps
Per impostazione predefinita, ci mostra quattro colonne di informazioni.
- PID è un ID processo del comando in esecuzione (CMD)
- TTY è un luogo in cui viene eseguito il comando in esecuzione
- TIME indica quanto tempo viene utilizzato dalla CPU durante l'esecuzione del comando
- CMD è un comando che viene eseguito come processo corrente
L'esecuzione del comando ps senza alcuna opzione è solo un formato più semplice del comando, non restituisce molte informazioni. Per sfruttare al meglio la potenza del comando ps, eseguiamolo con opzioni aggiuntive che verranno spiegate in dettaglio nelle sezioni seguenti.
01) Visualizza tutti i processi (formato UNIX)
Per visualizzare tutti i processi nel tuo sistema Linux, puoi eseguire uno dei seguenti comandi:
$ ps -A
oppure:
$ ps -e
Inoltre, per elencare tutti i processi in esecuzione, eseguire:
$ ps -r
02) Visualizza tutti i processi (formato BSD)
Per vedere tutti i processi sul tuo sistema Linux usando il comando ps in formato BSD, puoi eseguire i seguenti comandi:
$ ps ax
o
$ ps aux
Dove:
- UTENTE - l'utente esegue il processo
- PID:l'ID del processo
- %CPU / %MEM - la percentuale di CPU/RAM occupata dai processi
- VSZ - la dimensione della memoria virtuale occupata dai processi
- RSS - la dimensione della memoria fisica occupata dai processi
- START - ora di inizio
- STAT - lo stato del processo in cui:S (inattivo), R (in esecuzione), I (inattività).
- Tempo:mostra quanto tempo CPU è stato concesso dal kernel per quel processo in esecuzione.
- COMANDO - il comando che viene eseguito come processo corrente
03) Visualizza tutti i processi che possono essere eseguiti da un comando
Per elencare tutti i processi che possono essere eseguiti da un comando, utilizziamo la seguente sintassi:
$ ps -C <command_name>
Ad esempio, elenca tutti i processi del comando '/usr/sbin/kerneloops' eseguendo:
$ ps -C kerneloops
Puoi anche utilizzare l'argomento sotto forma di un elenco separato da spazi vuoti o da virgole, ad esempio:
$ ps -C sshd,systemd
04) Visualizza tutti i processi eseguiti da un utente
Se vuoi elencare il processo per utente il cui ID utente 1000, eseguiamo il seguente comando:
$ ps -u 1000
Puoi anche cercare il processo per nome utente:
$ ps -U root -u root u
Il parametro -U parameter
selezionerà tramite real user ID (RUID)
. Seleziona i processi il cui nome utente o ID reale è nell'elenco degli utenti. L'ID utente reale identifica l'utente che ha creato il processo.
Mentre il parametro -u paramater
selezionerà in base all'ID utente effettivo (EUID)
05) Visualizza i processi di proprietà del gruppo
Per elencare tutti i processi di proprietà di un nome di gruppo specifico, eseguiamo il comando con -fG
opzione. Ad esempio:
$ ps -fG cas
Per visualizzare tutti i processi per ID gruppo, puoi eseguire il comando con l'opzione '-g'. Ad esempio:
$ ps -g 1
Uscita:
PID TTY TIME CMD
1 ? 00:00:03 systemd
06) Visualizza i processi per PID
Puoi elencare tutti i processi per PID eseguendo il comando ps con l'opzione '-fp'. Ad esempio:
$ ps -fp 34531
Uscita:
UID PID PPID C STIME TTY TIME CMD
cas 34531 1 0 06:16 ? 00:00:00 /lib/systemd/systemd --user
Inoltre, per elencare tutti i processi per PPID, eseguiamo il comando con l'opzione '--ppid':
$ ps -f --ppid 34529
Uscita:
UID PID PPID C STIME TTY TIME CMD
cas 34609 34529 0 06:16 ? 00:00:00 sshd: cas@pts/0
07) Visualizza i processi per TTY
Per visualizzare tutti i processi di TTY, puoi eseguire il comando con l'opzione '-t'. Ad esempio:
$ ps -t tty1
08) Visualizza i processi di proprietà dell'utente corrente
Per elencare tutti i processi in esecuzione dall'utente corrente, eseguiamo il comando con l'opzione '-x':
$ ps -x
09) Visualizza tutti i processi con l'elenco in formato completo
Ad esempio, eseguiamo il comando ps con -f
opzione, per visualizzare tutto il processo con il formato completo:
$ ps -af
10) Visualizza tutti i processi con un formato extra
Inoltre, per visualizzare l'elenco in formato extra completo del risultato, esegui il comando ps con -F
opzione. Ad esempio:
$ ps -F
11) Visualizza tutti i processi in formato gerarchico ASCII
Per illustrare, supponendo che tu voglia visualizzare tutto il processo sul tuo sistema Linux nel formato della gerarchia dei processi artistici ASCII, eseguiamo:
$ ps af
L'output sarà in formato "foresta":
12) Processo di visualizzazione in output esteso
Se vuoi ampliare l'output quando esegui il comando ps, usa w
opzione:
$ ps w
Facciamo un confronto tra gli output dell'esecuzione di 'ps w' e 'ps':
13) Processo di visualizzazione in base al formato definito dall'utente
È possibile utilizzare la seguente sintassi per visualizzare nel formato definito dall'utente:
Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name
For example:
$ ps -e -o user,pid,cmd
14) Visualizza i thread con ID thread
Ad esempio, per mostrare i thread con la colonna SPID (SPID è l'ID del thread), eseguire:
$ ps -aT
15) Mostra le informazioni sui thread
Inoltre, puoi usare l'opzione '-L' per ottenere le informazioni sui thread nel tuo sistema Linux:
$ ps -aL
L'output con la colonna 'LWP' mostra l'ID del thread:
Altri esempi
01) Controlla quali processi occupano più RAM
Il comando seguente visualizzerà la maggior parte della memoria utilizzando i processi, %MEM
nella prima colonna, PID
nella 2a colonna e comando nella 3a colonna per tutti i processi in esecuzione sul sistema:
$ ps -eo pmem,pid,cmd | sort -k 1 -nr
02) Visualizza tutti i thread di un ID processo specifico
Questo mostrerà tutti i thread di un particolare pid di processo.
$ ps -Lf -p 3482
03) Mostra il processo figlio di un genitore
Questo mostrerà tutti i processi figlio di un processo ed è utile per scoprire quali processi sono stati estratti da questo processo principale.
$ ps -o pid,pcpu,pmem,uname,comm -C apache2
04) Mostra da quanto tempo è in esecuzione il processo
Il comando seguente mostrerà da quanto tempo il processo 'mysql' è in esecuzione sul sistema:
$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
etimes
:tempo trascorso dall'avvio del processo, nella forma [[DD-]hh:]mm:ss.etimes
:tempo trascorso dall'avvio del processo, in secondi.
05) Ottieni informazioni sulla sicurezza
Se vogliamo vedere chi è attualmente connesso al tuo server, possiamo vederlo usando il comando ps:
$ ps -eo pid,user,args
Ora puoi mappare i pid alle rispettive unità di sistema tramite il comando seguente:
$ ps -e -o pid,unit,cmd
Conclusione
pstree (o use ps -axjf ) e pgrep sono comandi aggiuntivi che possono aiutare a ottenere informazioni sull'esecuzione del processo.
Puoi usare ps come monitor in tempo reale usando il comando watch, diciamo, vogliamo filtrare i processi in base alla CPU e il rapporto sull'utilizzo della memoria viene aggiornato ogni 1 secondo.
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
In questo tutorial, abbiamo imparato molti modi per usare il comando ps in Linux. Per esplorare tutte le opzioni, fare riferimento alla pagina man di ps. Grazie per la lettura e per favore lascia il tuo suggerimento nella sezione commenti qui sotto.