In Linux, un'istanza in esecuzione di un programma è chiamata processo. Occasionalmente, quando si lavora su una macchina Linux, potrebbe essere necessario scoprire quali processi sono attualmente in esecuzione.
Esistono numerosi comandi che puoi utilizzare per trovare informazioni sui processi in esecuzione, con ps
, pstree
e top
essendo quelli più comunemente usati.
Questo articolo spiega come utilizzare ps
comando per elencare i processi attualmente in esecuzione e visualizzare le informazioni su tali processi.
Come utilizzare ps
Comando #
La sintassi generale per ps
il comando è il seguente:
ps [OPTIONS]
Per motivi storici e di compatibilità, il ps
comando accetta diversi tipi di opzioni:
- Opzioni di stile UNIX, precedute da un singolo trattino.
- Opzioni di stile BSD, utilizzate senza trattino.
- Opzioni lunghe GNU, precedute da due trattini.
È possibile combinare diversi tipi di opzioni, ma in alcuni casi particolari possono verificarsi conflitti, quindi è meglio utilizzare un solo tipo di opzione.
Le opzioni BSD e UNIX possono essere raggruppate.
Nella sua forma più semplice, se utilizzato senza alcuna opzione, ps
stamperà quattro colonne di informazioni per almeno due processi in esecuzione nella shell corrente, la shell stessa e i processi in esecuzione nella shell quando è stato invocato il comando.
ps
L'output include informazioni sulla shell (bash
) e il processo in esecuzione in questa shell (ps
, il comando che hai digitato):
PID TTY TIME CMD
1809 pts/0 00:00:00 bash
2043 pts/0 00:00:00 ps
Le quattro colonne sono etichettate PID
, TTY
, TIME
e CMD
.
PID
- L'ID del processo. Di solito, quando si esegueps
comando, l'informazione più importante che l'utente sta cercando è il PID del processo. Conoscere il PID consente di interrompere un processo malfunzionante.TTY
- Il nome del terminale di controllo per il processo.TIME
- Il tempo CPU cumulativo del processo, mostrato in minuti e secondi.CMD
- Il nome del comando utilizzato per avviare il processo.
L'output sopra non è molto utile in quanto non contiene molte informazioni. La vera potenza di ps
il comando arriva quando viene lanciato con opzioni aggiuntive.
Il ps
comando accetta un vasto numero di opzioni che possono essere utilizzate per visualizzare un gruppo specifico di processi e diverse informazioni sul processo, ma nell'uso quotidiano ne sono necessarie solo poche.
ps
viene utilizzato più frequentemente con la seguente combinazione di opzioni:
Modulo BSD :
ps aux
- Il
a
l'opzione dice aps
per visualizzare i processi di tutti gli utenti. Non vengono mostrati solo i processi che non sono associati a un terminale e i processi dei capigruppo. u
sta per un formato orientato all'utente che fornisce informazioni dettagliate sui processi.- Il
x
l'opzione indicaps
per elencare i processi senza un terminale di controllo. Si tratta principalmente di processi avviati all'avvio e in esecuzione in background.
Il comando visualizza le informazioni in undici colonne etichettate USER
, PID
, %CPU
, %MEM
, VSZ
, RSS
, STAT
, START
, TTY
, TIME
e CMD
.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 77616 8604 ? Ss 19:47 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:47 0:00 [kthreadd]
...
Abbiamo già spiegato PID
, TTY
, TIME
e CMD
etichette. Ecco una spiegazione di altre etichette:
USER
- L'utente che esegue il processo.%CPU
- La cpuutilizzo del processo.%MEM
- La percentuale della dimensione impostata residente del processo sulla memoria fisica sulla macchina.VSZ
- Dimensione della memoria virtuale del processo in KiB.RSS
- La dimensione della memoria fisica utilizzata dal processo.STAT
- Il codice dello stato del processo, comeZ
(zombie),S
(dormiente) eR
(in esecuzione).START
- L'ora in cui è stato avviato il comando.
Il f
l'opzione dice a ps
per visualizzare una vista ad albero dei processi da padre a figlio:
ps auxf
Il ps
Il comando consente anche di ordinare l'output. Ad esempio, per ordinare l'output in base all'utilizzo della memoria, dovresti utilizzare:
ps aux --sort=-%mem
Modulo UNIX :
ps -ef
- Il
-e
l'opzione indicaps
per visualizzare tutti i processi. - Il
-f
si distingue per l'elenco completo, che fornisce informazioni dettagliate sui processi.
Il comando visualizza le informazioni in otto colonne etichettate UID
, PID
, PPID
, C
, STIME
, TIME
e CMD
.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:47 ? 00:00:01 /sbin/init
root 2 0 0 19:47 ? 00:00:00 [kthreadd]
...
Le etichette che non sono già state spiegate hanno il seguente significato:
UID
- Uguale aUSER
, l'utente che esegue il processo.PPID
- L'ID del processo principale.C
- Come%CPU
, l'utilizzo della CPU del processo.STIME
- ComeSTART
, l'ora in cui è stato avviato il comando.
Per visualizzare solo i processi in esecuzione come utente specifico, digita il comando seguente, dove linuxize
è il nome dell'utente:
ps -f -U linuxize -u linuxize
Formato definito dall'utente #
Il o
l'opzione consente di specificare quali colonne vengono visualizzate durante l'esecuzione di ps
comando.
Ad esempio, per stampare solo informazioni sul PID
e COMMAND
, eseguiresti uno dei seguenti comandi:
ps -efo pid,comm
ps auxo pid,comm
Utilizzo di ps
Con altri comandi #
ps
può essere utilizzato in combinazione con altri comandi tramite piping.
Se vuoi visualizzare l'output di ps
comando, una pagina alla volta invialo tramite pipe a less
comando:
ps -ef | less
L'output di ps
il comando può essere filtrato con grep
. Ad esempio, per mostrare solo il processo che appartiene all'utente root dovresti eseguire:
ps -ef | grep root
Conclusione #
Il ps
command è uno dei comandi più comunemente usati durante la risoluzione dei problemi sui sistemi Linux. Ha molte opzioni, ma di solito la maggior parte degli utenti usa ps aux
o ps -ef
per raccogliere informazioni sui processi in esecuzione.
Per ulteriori informazioni su ps
, digita man ps
nel tuo terminale.
Se hai domande o feedback, sentiti libero di lasciare un commento.