Come trovare il processo padre PPID in Linux

Ogni volta che un programma viene eseguito, il kernel crea un processo associato al programma. In poche parole, un processo è un’istanza in esecuzione di un programma in Linux.

Il processo creato dal kernel è chiamato ‘Processo genitore’. I processi derivati o generati dal processo genitore sono conosciuti come ‘Processi figlio’. Un processo genitore potrebbe consistere in più processi figlio, ognuno con un PID unico (ID Processo) ma condividendo lo stesso PPID.

In questa guida, esploriamo vari modi che puoi utilizzare per scoprire i Process ID (PPID) dei processi genitori o i processi su un sistema Linux.

Qual è la differenza tra un PID e un PPID?

A program that is loaded into memory and running is known as a process. Once started, the process is given a unique number known as the process ID (PID) that uniquely identifies it in the system. The process can be referred to at any time using its PID. For example, to kill a process, you will have to know its PID first.

Oltre al PID, ogni processo riceve un identificativo del processo genitore ID (PPID) che indica quale processo lo ha generato. Quindi, il PPID è il PID del processo genitore.

Per mettere questo in contesto, supponiamo che il processo 5 con un PID di 5050 avvii il processo 6. Il processo6 riceverà un unico PID come 6670, ma riceverà comunque il PPID di 5050.

Il processo genitore qui è il processo 5 e il processo figlio è 6. Il processo figlio riceve un unico PID ma il PPID è lo stesso del PID del processo genitore (processo5)

A single parent can start multiple several child processes, each with a unique PID but all sharing the same PPID.

Trova l’ID del processo genitore (PPID) in Linux

Ci sono due approcci principali per trovare il PPID di un processo in esecuzione su un sistema Linux:

  • Utilizzando il comando pstree.
  • Utilizzando il comando ps.

Trova il PPID del processo Linux utilizzando il comando pstree

A pstree command is a command-line tool that displays running processes as a tree, which makes for a convenient way of displaying processes in a hierarchy. It shows the parent-child relationship in a tree hierarchy.

Con l’opzione -p, il comando pstree visualizza tutti i processi genitori in esecuzione insieme ai loro processi figlio corrispondenti e ai rispettivi PID.

$ pstree -p
Show Linux Running Processes in Tree Hierarchy

Dall’output, possiamo vedere gli ID dei processi genitori insieme agli ID dei processi figlio.

Per dimostrazione, verificheremo il PPID per Mozilla Firefox insieme all’intera gerarchia di processi utilizzando il seguente comando:

$ pstree -p | grep 'firefox'
Find the PPID of the Linux Process

Dall’output, puoi vedere che il PPID di Firefox è 3457 e il resto sono PIDs dei processi figlio.

Per visualizzare solo il PPID di Firefox e omettere il resto dell’output, inoltra l’output al comando head con -1 per visualizzare la prima riga.

$ pstree -p | grep 'firefox' | head -1
Print PPID of Linux Process

Trova il PPID del processo Linux utilizzando il comando ps

L’altra opzione per trovare il PPID di un processo è il comando ps, che è un comando ampiamente utilizzato che mostra i processi in esecuzione attualmente su un sistema Linux.

Quando utilizzato con l’opzione -ef, il comando ps elenca tutti i processi in esecuzione insieme ai loro dettagli come il UID, PID, PPID, ecc.

$ ps -ef
List Running Linux Processes with PID

Per restringerlo e visualizzare il PPID di un processo specifico, ad esempio, Firefox, passa l’opzione -e e inoltra l’output al comando grep come mostrato.

$ ps -e | grep 'firefox'
Find Linux Process PID

Ancora una volta, dall’output, puoi vedere che il PPID di Firefox è 3457.

In questa guida, abbiamo dimostrato come è possibile trovare i PPID dei processi in esecuzione su un sistema Linux. Puoi utilizzare sia il comando pstree che il comando ps per raggiungere lo stesso obiettivo.

Source:
https://www.tecmint.com/find-parent-process-ppid/