
Ottieni un'istantanea dei processi in esecuzione sul tuo computer Linux con ps comando. Individua i processi in base al nome, all'utente o persino al terminale con tutti i dettagli di cui hai bisogno. Ti mostriamo come.
Gestione dei processi su Linux
Il cuore pulsante di tutti i sistemi operativi Linux e Unix è il kernel. Tra le sue numerose responsabilità vi è l'allocazione di risorse di sistema come RAM e tempo della CPU. Questi devono essere manipolati in tempo reale in modo che tutti i processi in esecuzione ottengano la loro giusta quota, in base alla priorità di ogni attività.
A volte le attività possono bloccarsi o entrare in un circuito stretto o non rispondere per altri motivi. Oppure possono continuare a funzionare, ma assorbire troppo tempo CPU o RAM o comportarsi in modo altrettanto anti-social. A volte i compiti devono essere uccisi come misericordia per tutti i soggetti coinvolti. Il primo passo. Certo, è identificare il processo in questione.
Ma forse non hai nessun problema con le attività o le prestazioni. Forse sei solo curioso di sapere quali processi sono in esecuzione all'interno del tuo computer e ti piacerebbe sbirciare sotto il cofano. Il ps comando soddisfa entrambi questi bisogni. Ti dà un'istantanea di ciò che sta accadendo all'interno del tuo computer “in questo momento”.
ps è abbastanza flessibile da darti esattamente le informazioni di cui hai bisogno nel formato che preferisci. Infatti, ps ha molte opzioni. Le opzioni descritte qui soddisfano le esigenze più comuni. Se hai bisogno di approfondire ps di quanto l'abbiamo preso in questo articolo, scoprirai che la nostra introduzione semplifica la digestione della pagina man.
Processi di quotazione
Il modo più semplice da usare ps è accenderlo senza parametri:
ps

ps visualizza un elenco dei processi avviati dall'utente che ha eseguito il comando.

Le quattro colonne sono:
- PID: Il numero ID del processo.
- TTY: Il nome della console a cui l'utente ha effettuato l'accesso.
- TEMPO: La quantità di tempo di elaborazione della CPU utilizzata dal processo.
- CMD: Il nome del comando che ha avviato il processo
Processo di quotazione per tutti gli utenti
aggiungendo il -e (seleziona tutti i processi) che possiamo fare ps elenca i processi che sono stati avviati da tutti gli utenti, non solo dall'utente che esegue ps comando. Poiché questa sarà una lunga lista, la stiamo inserendo less.
ps -e | less

L'elenco dei processi viene reindirizzato less.

Abbiamo molte più voci nell'elenco, ma vediamo le stesse quattro colonne di prima. Le voci con un punto interrogativo ? nel TTY la colonna non è stata avviata da una finestra del terminale.
Mostra gerarchia dei processi
A volte può aiutare a capire un problema o identificare un particolare processo se riesci a vedere quali processi hanno avviato altri processi. Noi usiamo il -H (gerarchia) opzione per farlo.
ps -eH | less

Il rientro indica quali processi sono genitori di quali altri processi.

Per aggiungere un po 'più di chiarezza, possiamo chiedere ps per aggiungere alcune linee ASCII e disegnare la gerarchia come un albero. L'opzione per farlo è il --forest opzione.
ps -eH --forest | less

Ciò semplifica il monitoraggio di quali processi sono i genitori di altri processi.

Elencazione dei processi per nome
È possibile reindirizzare l'output da ps attraverso grep per elencare le voci che hanno nomi che corrispondono al termine di ricerca. Qui stiamo cercando voci che corrispondono al termine di ricerca “firefox”:
ps -e | grep firefox

In questo caso, l'output è una singola voce per il processo che ci interessa. Naturalmente, se avessimo lanciato diverse istanze di Firefox, ci sarebbe più di un elemento restituito nell'elenco.

Mostra più colonne nell'output
Per aggiungere più colonne all'output, utilizzare il -f (formato completo) opzione.
ps -ef | less

Un set aggiuntivo di colonne è incluso nell'output di ps.

Le colonne sono:
- UID: L'ID utente del proprietario di questo processo.
- PID: L'ID del processo.
- PPID: ID processo principale del processo.
- C: Il numero di bambini presenti nel processo.
- STIME: Ora di inizio. Il momento in cui è iniziato il processo.
- TTY: Il nome della console a cui l'utente ha effettuato l'accesso.
- TEMPO: La quantità di tempo di elaborazione della CPU utilizzata dal processo.
- CMD: Il nome del comando che ha avviato il processo.
Usando il -F (extra formato completo) possiamo ottenere ancora più colonne:
ps -eF | less

Le colonne che otteniamo questa volta richiedono che lo schermo sia fatto scorrere lateralmente per rivelarle tutte.

Premendo il tasto “Freccia destra” si sposta il display verso sinistra.

Le colonne che ora otteniamo sono:
- UID: L'ID utente del proprietario di questo processo.
- PID: L'ID del processo.
- PPID: ID processo principale del processo.
- C: Il numero di bambini presenti nel processo.
- SZ: Dimensioni nelle pagine RAM dell'immagine di processo.
- RSS: Dimensioni del set residenti. Questa è la memoria fisica non scambiata utilizzata dal processo.
- PSR: Il processore a cui è assegnato il processo.
- STIME: Ora di inizio. Il momento in cui è iniziato il processo.
- TTY: Il nome della console a cui l'utente ha effettuato l'accesso.
- TEMPO: La quantità di tempo di elaborazione della CPU utilizzata dal processo.
- CMD: Il nome del comando che ha avviato il processo.
Elencazione dei processi per ID processo
Una volta trovato l'ID processo per il processo che ti interessa, puoi usarlo con il ps comando per elencare i dettagli di quel processo. Usa il -p (selezionare per ID processo) per raggiungere questo obiettivo:
ps -p 3403

I dettagli per questo processo sono elencati:

Non sei limitato a un ID processo. È possibile fornire un elenco di ID processo, separati da spazi.
Elencazione dei processi per comando
Il -C (comando) consente di cercare un processo usando il nome del comando. Cioè, il nome del comando che ha avviato il processo. Ciò è leggermente diverso dalla riga di comando, che potrebbe includere nomi di percorso, parametri o opzioni.
ps -C shutter

Sono elencati i dettagli per il processo dell'otturatore.
Processi di quotazione di proprietà di un utente
Per visualizzare i processi di proprietà di un determinato utente, utilizzare il -u (elenco utenti) opzione:
ps -u mary

Vengono visualizzati i processi di proprietà dell'account utente Mary.

Elencazione dei processi per terminale
Per vedere i processi associati a un TTY, utilizzare il -t (seleziona per TTY) opzione. Utilizzato senza un numero TTY, il -t l'opzione riporta i processi associati alla finestra del terminale corrente.
tty
ps -t

Il tty Il comando segnala che questo è pseudo-teletipo 0. I processi elencati da ps -t sono tutti associati a TTY pts/0.
Se passiamo un numero TTY sulla riga di comando, dovremmo ottenere un rapporto dei processi associati a quel TTY.
ps -t 1

Questa volta i processi sono tutti associati a TTY pts/1.
RELAZIONATO: Che cos'è un TTY su Linux? (e come usare il comando tty)
Selezione delle colonne da visualizzare
Con il -o (formato) opzione è possibile selezionare da quali colonne si desidera includere nell'output ps. Si specificano le colonne per nome. L'elenco (lungo) dei nomi delle colonne può essere visto nella pagina man nella sezione intitolata “Standard Format Specifiers”. In questo esempio, scegliamo di avere il tempo della CPU (pcpu) e la riga di comando con argomenti (args) incluso nell'output.
ps -e -o pcpu,args | less

L'output include solo le nostre due colonne richieste.

Ordinamento dell'output per colonne
È possibile ordinare l'output per te usando il --sort opzione. Ordiniamo l'output per colonna della CPU:
ps -e -o pcpu,args --sort -pcpu| less

Il trattino “-” sul pcpu Il parametro sort fornisce un ordinamento decrescente.

Per vedere i dieci processi a più alta intensità di CPU, reindirizzare l'output attraverso head comando:
ps -e -o pcpu,args --sort -pcpu | head -10

Otteniamo un elenco ordinato e troncato.

Se aggiungiamo più colonne al nostro display, possiamo ordinare per più colonne. Aggiungiamo il pmem colonna. Questa è la percentuale di memoria del computer utilizzata dal processo. Senza un trattino o con un plus ” +“, L'ordinamento è crescente.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

Otteniamo la nostra colonna aggiuntiva e la nuova colonna è inclusa nell'ordinamento. La prima colonna viene ordinata prima della seconda colonna e la seconda colonna viene ordinata in ordine crescente perché non è stato inserito un trattino pmem.

Rendiamolo un po 'più utile e aggiungiamo nella colonna ID processo (pid) in modo da poter vedere il numero di processo di ogni processo nel nostro elenco.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Ora possiamo identificare i processi.

Processi di uccisione per ID processo
Abbiamo esaminato una serie di modi per identificare i processi, tra cui nome, comando, utente e terminale. Abbiamo anche coperto i modi per identificare i processi in base ai loro attributi dinamici, come l'utilizzo della CPU e la memoria.
Quindi, in un modo o nell'altro, possiamo identificare i processi in esecuzione. Conoscendo il loro ID processo, possiamo (se dobbiamo) uccidere uno di quei processi usando il kill comando. Se volessimo interrompere il processo 898, utilizzeremmo questo formato:
sudo kill 898

Se tutto va bene, il processo si chiude silenziosamente.

RELAZIONATO: Come uccidere i processi dal terminale Linux
Processi di uccisione per nome
Il pkill Il comando consente di terminare i processi per nome. Assicurati di aver identificato il processo corretto! Questo comando interromperà il processo principale.
sudo pkill top

Ancora una volta, nessuna notizia è una buona notizia. Il processo è terminato in silenzio.

Uccidere più processi per nome
Se hai più copie di un processo in esecuzione o se un processo ha generato una serie di processi figlio (come può fare Google Chrome), come puoi eliminarli? È altrettanto facile. Noi usiamo il killall comando.
Abbiamo due copie dei migliori in esecuzione:
ps -e | grep top

Possiamo terminare entrambi con questo comando:
sudo killall top

Nessuna risposta significa nessun problema, quindi entrambi questi processi sono stati interrotti.

Ottieni una vista dinamica con la parte superiore
L'output di ps è una vista istantanea. Non si aggiorna. Per ottenere una vista di aggiornamento dei processi, utilizzare il top comando. Fornisce una visione dinamica dei processi in esecuzione sul tuo computer. Il display è diviso in due parti. Nella parte superiore dello schermo è presente una dashboard composta da righe di testo e una tabella nella parte inferiore dello schermo composta da colonne.
Inizio top con questo comando:
top

Le colonne contengono informazioni sui processi:
- PID: ID processo
- UTENTE: Nome del proprietario del processo
- PR: Priorità del processo
- NI: Il buon valore del processo
- VIRT: Memoria virtuale utilizzata dal processo
- RES: Memoria residente utilizzata dal processo
- SHR: Memoria condivisa utilizzata dal processo
- S: Stato del processo. Vedi l'elenco sotto dei valori che questo campo può assumere
- %PROCESSORE: la quota di tempo della CPU utilizzata dal processo dall'ultimo aggiornamento
- % MEM: condivisione della memoria fisica utilizzata
- TIME +: tempo totale della CPU utilizzato dall'attività in centesimi di secondo
- COMANDO: nome comando o riga comandi (parametri nome e riga comandi) Se non è possibile visualizzare la colonna comandi, premere il tasto “Freccia destra”.
Lo stato del processo può essere uno dei seguenti:
- D: Sonno ininterrotto
- R: In esecuzione
- S: Dormire
- T: Tracciato (interrotto)
- Z: Zombie
Premere il tasto “Q” per uscire da top.
RELAZIONATO: 37 Comandi Linux importanti che dovresti conoscere
Prima di uccidere un processo
Assicurati che sia quello che stai cercando e controlla che non ti causi problemi. In particolare, vale la pena verificare con -H (gerarchia) e --forest opzioni per assicurarsi che non abbia processi figlio importanti di cui ti sei dimenticato.
