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.