GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare il PID e il PPID di un processo in Linux

Conoscere il PID e il PPID di un processo può essere utile se devi gestire o interagire con un processo in esecuzione sul tuo sistema.

Esistono numerosi modi per ottenere il PID (Process ID) e il PPID (Parent Process ID) di un determinato processo in Linux.

Comando Descrizione
pidof nome_processo Funziona con il nome esatto del processo
pgrep nome_processo Restituisce il PID di tutte le corrispondenze
ps -o ppid=-p PID Ottieni il PPID dal PID
$$ PID del processo/shell corrente
${PPID} PID del padre del processo corrente

Spiegherò questi comandi in dettaglio, ma prima un breve riepilogo di processo, PID e PPID.

Nozioni di base sui processi Linux

Tutto ciò che viene eseguito sul tuo sistema viene eseguito tramite qualcosa noto come processo, essendo semplicemente l'istanza in esecuzione di un programma.

A tutti i processi in esecuzione sul tuo sistema vengono assegnati identificatori. Questi possono essere utili se vuoi monitorare il processo (ad esempio, per vedere quanta memoria o CPU sta utilizzando), o forse se vuoi terminarlo se inizia a bloccarsi o semplicemente si comporta in modo un po' strano.

Gli identificatori che vengono associati a tutti questi processi sono noti come PID e PPID.

Cos'è un PID?

PID sta per "ID processo". Ancora una volta, questo è semplicemente l'identificatore che viene allegato a un programma quando inizia a essere eseguito e può essere utile se devi interagire con il processo in un modo o nell'altro.

Cos'è un PPID?

PPID è abbastanza strettamente correlato a un PID. PPID sta per "ID processo padre" e, se non l'hai già ricevuto, sta semplicemente per il processo che creato il processo che stai controllando.

Ad esempio, supponiamo di avere due processi. Uno si chiama "spawner" e ha un ID di processo (o PID) di 7234. Il nostro secondo processo, "client di posta elettronica", ha un ID di processo di 7456 quando lo creiamo. Il nostro programma di spawner avvia il nostro client di posta elettronica, con il risultato che il nostro client di posta elettronica ha un PID di 7456 e un PPID di 7234, poiché lo spawner (che aveva il PID di 7234) è ciò che ha generato il client di posta elettronica.

Ora che hai rispolverato le tue basi, vediamo come ottenere l'ID del processo in Linux.

Come ottenere il PID di un processo

L'importante qui è conoscere il nome del processo di cui si desidera trovare il PID.

Se conosci il nome esatto del processo , puoi ottenere il suo ID processo utilizzando il pidof comando:

pidof exact_process_name

Più facile a dirsi che a farsi perché potresti non conoscere sempre il nome esatto del processo. La cosa buona qui è che pidof il comando funziona con il completamento della scheda, quindi se conosci le poche lettere iniziali del nome del processo, puoi premere la scheda per ottenere suggerimenti corrispondenti.

Tuttavia, ciò potrebbe non funzionare sempre se il nome del processo non corrisponde a ciò che pensi venga chiamato. Ad esempio, il processo per il browser Edge su Linux è chiamato msedge . Non inizia con "edge" e il completamento della scheda non funzionerà se ti concentri su "edge".

Quindi, quello che puoi fare è ricorrere al comando ps in Linux per elencare tutti i processi in esecuzione da tutti gli utenti e quindi utilizzare grep sull'output per filtrare il risultato.

ps aux | grep -i partial_process_name

C'è un comando dedicato che combina le funzionalità ps e il comando grep e non sorprende che sia chiamato pgrep :

pgrep partial_or_exact_process_name

L'output predefinito mostra solo i PID senza alcuna informazione sul processo. Questo potrebbe essere problematico se viene restituito più di un ID processo per il termine cercato.

Pertanto, suggerisco di utilizzare la funzione di elenco per assicurarti di ottenere il PID del processo desiderato.

pgrep -l partial_or_exact_process_name

Puoi anche utilizzare il comando top per ottenere le informazioni sul processo, ma non può essere utilizzato negli script.

💡Puoi usare il comando pstree per ottenere i PID di tutti i processi in esecuzione sul tuo sistema Linux:pstree -p -a

Ottenere il PPID dal PID di un processo figlio

Una volta che conosci il PID di un processo, è facile trovare il PPID per quel processo.

Puoi semplicemente eseguire il comando seguente, sostituendo PID con l'ID del processo corrente (figlio):

ps -o ppid= -p PID

In una shell, il comando sopra e ${PPID} entrambi dovrebbero restituire lo stesso output:

E questo è tutto quello che c'è da fare per trovare PID e PPID!

Verifica del PID e PPID del processo attualmente in esecuzione

Se ti trovi in ​​una shell come Bash, è estremamente facile trovare il PID e il PPID del processo chiamante (che di solito sarà la shell).

Bash memorizza il valore del PID sotto il $$ variabile e il PPID sotto il ${PPID} variabile:

# Prints the PID.
echo "$$"

# Prints the PPID.
echo "${PPID}"

In questo modo, puoi ottenere l'ID del processo di shell e subshell.

Ed è così facile! Anche trovare i PID e i PPID di altri processi non è molto più difficile.

Conclusione

Ora dovresti sapere tutto ciò di cui hai bisogno per trovare sia i PID che i PPID per l'esecuzione dei processi sul tuo sistema.

Se hai bisogno di aiuto per far funzionare qualcosa o hai solo alcune domande rimanenti, sentiti libero di lasciare questo e qualsiasi altra cosa nei commenti qui sotto.


Linux
  1. Come trovare e uccidere il processo Zombie in Linux

  2. Trova il tempo di esecuzione di un comando o di un processo in Linux

  3. Come calcolare l'utilizzo della CPU di un processo tramite PID in Linux da C?

  4. Come reindirizzare i risultati di "trova" a mv in Linux

  5. Come trovare il file .pid per un determinato processo

Come trovare il numero di porta di un servizio in Linux

Come scoprire chi ha riavviato il sistema Linux e quando

Come sospendere un processo e riprenderlo in un secondo momento in Linux

Come trovare ed eliminare i collegamenti simbolici interrotti in Linux

Come trovare e uccidere i processi in esecuzione in Linux

Come trovare l'ID di processo di un programma e ucciderlo [Suggerimento rapido]