Introduzione

In Linux, un'istanza in esecuzione di un programma si chiama processo. Occasionalmente, quando si lavora su una macchina Linux, potrebbe essere necessario scoprire quali processi sono attualmente in esecuzione.

Esistono numerosi comandi che è possibile utilizzare per trovare informazioni sui processi in esecuzione, ps e top sono i più utilizzati.

In questo articolo, parleremo di come utilizzare il comando ps  per elencare i processi attualmente in esecuzione e visualizzare informazioni su tali processi.

Come usare il comando ps

La sintassi generale per il comando ps è la seguente:

ps [OPTIONS]

Per motivi storici e di compatibilità, il comando ps accetta diversi tipi di opzioni:

  • Opzioni di stile UNIX, precedute da un singolo trattino.
  • Opzioni di stile BSD, utilizzate senza trattino.
  • Opzioni GNU lunghe, precedute da due trattini.

Tutti i tipi di opzioni possono essere mescolati, ma in alcuni casi speciali possono apparire conflitti, quindi è meglio attenersi a un tipo di opzioni. Le opzioni BSD e UNIX possono essere raggruppate.

Nella sua forma più semplice se usato senza alcuna opzione, ps stamperà quattro colonne di informazioni per almeno due processi in esecuzione nella shell corrente, la shell stessa e i processi che vengono eseguiti nella shell quando il comando.

ps

L'output include informazioni sulla shell ( bash ) e sul processo in esecuzione in questa shell:

  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps

Le quattro colonne sono etichettati PID, TTY, TIME e CMD.

  • PID - L'ID del processo. Nella maggior parte dei casi quando si esegue il comando ps, l'informazione più importante che l'utente sta cercando è il PID di processo. Conoscere il PID consente di interrompere un processo non funzionante.
  • TTY - Il nome del terminale di controllo per il processo.
  • TIME  - Il tempo cumulativo della CPU del processo, indicato in minuti e secondi.
  • CMD - Il nome del comando utilizzato per avviare il processo.

L'output di cui sopra non è molto utile in quanto non contiene molte informazioni. L'utilità del comando ps arriva quando viene lanciato con opzioni aggiuntive.

Il comando ps accetta un numero enorme di opzioni che possono essere utilizzate per visualizzare un gruppo specifico di processo e diverse informazioni sul processo, ma solo una manciata è necessaria nell'uso quotidiano.

ps viene utilizzato più frequentemente con la seguente combinazione di opzioni:

Modulo BSD :

ps aux
  • L'opzione a indica la visualizzazione dei processi di tutti gli utenti, ad eccezione di quei processi che non sono associati a un terminale e ai processi dei leader del gruppo.
  • L'opzione u si riferisce ad un formato orientato all'utente che fornisce informazioni dettagliate sui processi.
  • L'opzione x consentirà di elencare i processi senza un terminale di controllo. Questi sono principalmente processi che vengono avviati all'avvio e in esecuzione in background.

Il comando visualizza 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 le etichette PID, TTY, TIME e CMD. Ecco una spiegazione di altre etichette:

  • USER - L'utente che esegue il processo.
  • %CPU - Il processo di utilizzo della CPU .
  • %MEM - La percentuale della dimensione residente del processo impostata 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, che può essere Z (zombie), S (sleeping), R (running) ..etc
  • START - L'ora di inizio del comando.

Per stampare un albero di processo aggiungere l'opzione f. Questo indicherà al comando ps di elencare una vista ad albero dei processi padre-figlio.

ps auxf

Il comando ps consente anche di ordinare l'output. Ad esempio, per ordinare l'output in base all'utilizzo della memoria dovresti usare:

ps aux --sort=-%mem

Modulo UNIX :

ps -ef
  • L'opzione e indica la visualizzazione di tutti i processi.
  • L'opzione f indica un elenco  full-format che fornisce informazioni dettagliate sui processi.

Il comando visualizza informazioni in undici 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- Come USER l'utente che esegue il processo.
  • PPID- L'ID del processo principale.
  • C- Come per %CPU il processo di utilizzo della CPU.
  • STIME - Come START, il momento in cui il comando è stato avviato.

Per vedere solo i processi in esecuzione come utente specifico utilizzare il seguente comando, dove nome_ute è il nome dell'utente:

ps -f -U nome_ute -u nome_ute

Formato definito dall'utente

L'opzione o consente di specificare quali colonne verranno visualizzate durante l'esecuzione del comando ps.

Ad esempio, per stampare informazioni solo su PID e COMMAND si dovrebbero eseguire uno dei seguenti comandi:

ps -efo pid,comm
ps -ef | less
ps -ef | grep root

Conclusione

Il comando ps  è uno dei comandi più comunemente utilizzati durante la risoluzione dei problemi sui sistemi Linux. Ha molte opzioni, ma di solito la maggior parte degli utenti sta utilizzando uno ps aux o ps -ef per raccogliere informazioni sui processi in esecuzione.

Per informazioni su tutte le opzioni di ps  disponibili digitare man ps nel terminale.