Come usare il comando ps per monitorare i processi Linux

Contenuti

Una finestra di terminale su un laptop Linux.

Ottieni un'istantanea dei processi in esecuzione sul tuo computer Linux con il ps comando. Individua i processi per nome, utente o anche terminale con tutti i dettagli di cui hai bisogno. Ti mostriamo come.

Gestione dei processi in Linux

Il cuore di tutti i sistemi operativi Linux e Unix-like è il kernel. Tra le sue molte responsabilità c'è l'allocazione delle risorse di sistema, come la RAM e il tempo della CPU. Questi devono essere combinati in tempo reale in modo che tutti i processi in esecuzione ottengano la loro giusta quota, secondo la priorità di ogni compito.

Qualche volta, le attività possono andare in crash, entrare in un circuito chiuso o non rispondere per altri motivi. Oppure possono continuare a correre, ma consumano troppo tempo CPU o RAM, o comportarsi in modo altrettanto antisociale. Qualche volta, le faccende domestiche dovrebbero essere rimosse come misericordia per tutte le persone coinvolte. Il primo passo. Decisamente, è identificare la procedura in questione.

Ma forse non hai affatto problemi con i compiti o le prestazioni. Forse sei solo curioso di sapere quali processi sono in esecuzione all'interno del tuo computer e vorresti dare un'occhiata sotto il cofano. il ps Il comando soddisfa entrambe le esigenze. te lo regala un'istantanea di ciò che sta accadendo all'interno del tuo computer “Ora.”

ps è abbastanza flessibile da darti esattamente le informazioni di cui hai bisogno esattamente nel formato che desideri. In realtà, ps hai molte opzioni. Le alternative qui descritte copriranno le esigenze più comuni. Se vuoi approfondire ps di quello che abbiamo preso in questo post, scoprirai che la nostra introduzione rende la pagina man più facile da digerire.

Processi di quotazione

Il modo più semplice per usare ps è accenderlo senza parametri:

ps

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

Le quattro colonne sono:

  • PID: Il numero identificativo della procedura.
  • TTY: Il nome della console in cui l'utente è connesso.
  • TEMPO METEREOLOGICO: La quantità di tempo di elaborazione della CPU utilizzata dalla procedura.
  • CMD: Il nome del comando che ha avviato la procedura

Procedura di quotazione per tutti gli utenti

aggiungendo il -e (seleziona tutti i processi) possiamo fare ps elencare i processi che sono stati avviati da tutti gli utenti, non solo l'utente che esegue il ps comando. Perché questa sarà una lunga lista, lo stiamo integrando in less.

ps -e | meno

L'elenco dei processi viene reindirizzato a less.

Abbiamo molte più voci nell'elenco, ma vediamo le stesse quattro colonne di prima. Voci con un punto interrogativo ? a TTY La colonna non è iniziata da una finestra di terminale.

Mostra gerarchia dei processi

Qualche volta, puoi aiutare a risolvere un ostacolo o identificare una procedura particolare se puoi vedere quali processi hanno avviato altri processi. Noi usiamo il -H (gerarchia) possibilità di farlo.

ps -eH | meno

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

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

ps -eH --foresta | meno

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

Elenco dei processi per nome

Puoi reindirizzare l'output da ps attraverso grep per elencare le voci che hanno nomi che corrispondono al termine di ricerca. Qui cerchiamo le voci che corrispondono al termine di ricerca “Firefox”:

ps -e | grep firefox

Per questo caso, l'output è un unico input per la procedura che ci interessa. Decisamente, se avessimo lanciato più istanze di Firefox, ci sarebbe più di un elemento restituito nell'elenco.

Mostra più colonne nell'output

Per aggiungere più colonne all'output, usa el -f opzione (formato completo).

ps -ef | meno

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

Le colonne sono:

  • UID: ID utente del titolare di questa procedura.
  • PID: L'ID della procedura.
  • PPID: ID della procedura principale della procedura.
  • C: Il numero di bambini che ha la procedura.
  • TEMPO METEREOLOGICO: Ora di inizio. Nel momento in cui è iniziata la procedura.
  • TTY: Il nome della console in cui l'utente è connesso.
  • TEMPO METEREOLOGICO: La quantità di tempo di elaborazione della CPU utilizzata dalla procedura.
  • CMD: Il nome del comando che ha avviato la procedura.

Usando il -F (formato extra completo) possiamo ottenere ancora più colonne:

ps -eF | meno

Le colonne che otteniamo questa volta richiedono che lo schermo scorra lateralmente per rivelarle tutte.

Quando si preme il tasto “Freccia destra”, lo schermo scorre a sinistra.

Le colonne che otteniamo ora sono:

  • UID: ID utente del titolare di questa procedura.
  • PID: L'ID della procedura.
  • PPID: ID della procedura principale della procedura.
  • C: Il numero di bambini che ha la procedura.
  • SZ: Dimensioni dell'immagine della procedura in pagine RAM.
  • RSS: Dimensione del set residente. Questa è la memoria fisica invariata utilizzata dalla procedura.
  • PSR: Il responsabile a cui è affidata la procedura.
  • TEMPO METEREOLOGICO: Ora di inizio. Nel momento in cui è iniziata la procedura.
  • TTY: Il nome della console in cui l'utente è connesso.
  • TEMPO METEREOLOGICO: La quantità di tempo di elaborazione della CPU utilizzata dalla procedura.
  • CMD: Il nome del comando che ha avviato la procedura.

Elenco dei processi per ID procedura

Una volta trovato l'ID della procedura di tuo interesse, puoi usarlo con il ps comando per elencare i dettagli di quella procedura. Utilizzare il -p (scegli per ID procedura) opzione per raggiungere questo obiettivo:

ps -p 3403

I dettagli di questa procedura sono elencati:

Non sei limitato a un ID di procedura. Puoi fornire un elenco di ID di processo, separati da spazi.

Elenco dei processi per comando

il -C L'opzione (comando) ti permette di cercare una procedura usando il nome del comando. In altre parole, il nome del comando che ha avviato la procedura. Questo è leggermente diverso dalla riga di comando, che può includere nomi di percorso e parametri o opzioni.

ps -C otturatore

Sono elencati i dettagli della procedura dell'otturatore.

Elenco dei processi di proprietà di un utente

Per visualizzare i processi che sono di proprietà di un particolare utente, usa el -u (lista degli utenti) opzione:

ps -u mary

Vengono mostrati i processi di proprietà dell'account utente mary.

Elenco dei processi per terminale

Per visualizzare i processi associati a un TTY, usa el -t (scegli da TTY) opzione. Usato senza un numero TTY, il -t L'opzione riporta i processi associati alla finestra del terminale corrente.

tty
ps -t

il tty comando segnala che questo è pseudo-ticker 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 tutti i processi sono associati a TTY pts/1.

IMPARENTATO: Che cos'è un TTY in Linux?? (e come usare il comando tty)

Scegli le colonne da visualizzare

Con il -o (formato) puoi scegliere le colonne che vuoi includere nell'output di ps. Le colonne sono specificate per nome. La lista (lungo) i nomi delle colonne possono essere visti in pagina man nella sezione intitolata “Identificatori di formato standard”. 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,argomenti | meno

L'output include solo le nostre due colonne richieste.

Ordina l'output per colonne

Puoi ordinare l'output per te usando il --sort opzione. Ordiniamo l'output in base alla colonna CPU:

ps -e -o pcpu,argomenti --sort -pcpu| meno

Il copione “-” su di lui pcpu Il parametro sort fornisce un ordinamento decrescente.

Per vedere i dieci processi più intensivi per la CPU, incanalare la presa attraverso il head comando:

ps -e -o pcpu,argomenti --sort -pcpu | testa -10

Otteniamo un elenco ordinato e troncato.

Se aggiungiamo più colonne al nostro schermo, possiamo ordinare per più colonne. Aggiungiamo il pmem colonna. Questa è la percentuale della memoria del computer utilizzata dalla procedura.. Senza copione o con altro ” +“, L'ordinamento è crescente.

ps -e -o pcpu,pmem,argomenti --sort -pcpu,pmem | testa -10

Otteniamo la nostra colonna aggiuntiva e la nuova colonna è inclusa nella classificazione. La prima colonna è ordinata prima della seconda colonna, e la seconda colonna è ordinata in ordine crescente perché non abbiamo inserito un trattino pmem.

Rendiamolo un po' più utile e aggiungiamo la colonna ID della procedura (pid) così possiamo vedere il numero di procedura di ogni procedura nel nostro elenco.

ps -e -o pid,pcpu,pmem,argomenti --sort -pcpu,pmem | testa -10

Ora possiamo identificare i processi.

Ps -e -o pid output, pcpu, pmem, argomenti --sort -ppmem pmem |  testa 10

Uccidi i processi per ID procedura

Abbiamo coperto una gamma di alternative per identificare i processi, compreso il nome, il comando, utente e terminale. Copriamo anche le alternative per identificare i processi in base ai loro attributi dinamici, come l'utilizzo della CPU e della memoria.

Quindi, in un modo o nell'altro, possiamo identificare i processi in esecuzione. Conoscere il tuo ID procedura, noi possiamo (se richiesto) eliminare uno qualsiasi di questi processi utilizzando il kill comando. Se volessimo uccidere la procedura 898, useremmo questo formato:

sudo kill 898

Se tutto va bene, la procedura finisce in silenzio.

IMPARENTATO: Come uccidere i processi dal terminale Linux

Uccidi i processi per nome

il pkill il comando ti abilita uccidi i processi per nome. Assicurati di aver individuato la procedura corretta! Questo comando completerà la procedura superiore.

sudo pkill top

Un'altra volta, non avere notizie è una buona notizia. La procedura si conclude in silenzio.

Uccidi più processi per nome

Se disponi di più copie di una procedura in esecuzione, o una procedura ha generato più processi figlio (come può fare google chrome?), Come puoi rimuoverli?? È altrettanto facile. Noi usiamo il killall comando.

Abbiamo due copie di top running:

ps -e | grip in alto

Possiamo finire entrambi con questo comando:

sudo killall in alto

Se non c'è risposta, nessun problema, quindi entrambi i processi sono terminati.

sudo killall top output in una finestra thermonal

Ottieni una vista dinamica con la parte superiore

L'uscita di ps è una vista istantanea. Non si attualizza. Per avere una visione aggiornata dei tuoi processi, Utilizzare il top comando. Fornisce un vista dinamica dei processi in esecuzione sul tuo computer. Lo schermo è diviso in due parti. C'è un'area dashboard nella parte superiore dello schermo composta da righe di testo e una tabella nella parte inferiore dello schermo composta da colonne.

Cominciare top con questo comando:

superiore

Le colonne contengono informazioni sui processi:

  • PID: Identificazione della procedura
  • NOME UTENTE: Nome del titolare della procedura
  • PR: Procedura prioritaria
  • NI: Il buon valore della procedura
  • VIRT: Memoria virtuale utilizzata dalla procedura
  • RES: Memoria residente utilizzata dalla procedura
  • SHR: Memoria condivisa utilizzata dalla procedura
  • S: Stato della procedura. Vedi l'elenco sottostante dei valori che questo campo può assumere
  • %UPC: la percentuale di tempo CPU utilizzata dalla procedura dall'ultimo aggiornamento
  • % MEM: percentuale di memoria fisica utilizzata
  • TEMPO METEREOLOGICO +: tempo CPU totale utilizzato dall'attività in centesimi di secondo
  • COMANDO: nome del comando o riga di comando (nome e parametri della riga di comando) Se non riesci a vedere la colonna dei comandi, premere il tasto "Freccia destra".

Lo stato della procedura può essere uno dei seguenti:

  • D: Sonno ininterrotto
  • R: Di fretta
  • S: Addormentato
  • T: Tracciamento (fermato)
  • INSIEME A: Zombie

Premi il tasto “Q” Non è necessario aggiungere l'estensione top.

IMPARENTATO: 37 Comandi importanti di Linux che dovresti conoscere

Prima di uccidere una procedura

Assicurati che sia quello che stai cercando e verifica che non ti dia problemi. In particolare, È importante evidenziare consultare il -H (gerarchia) e --forest opzioni per assicurarti di non avere processi figlio importanti che hai dimenticato.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.