Cómo encontrar el PID y PPID de un proceso en Linux

Conocer el PID y el PPID de un proceso puede ser útil si necesita administrar o interactuar con un proceso que se ejecuta en su sistema.

Existen numerosas formas de obtener el PID (ID de proceso) y el PPID (ID de proceso principal) de un proceso determinado en Linux.

Mando Descripción
pidof nombre_del_proceso Funciona con el nombre exacto del proceso.
pgrep nombre_del_proceso Devuelve el PID de todas las coincidencias
ps -o ppid = -p PID Obtener el PPID de PID
$$ PID del proceso/shell actual
$ {IDPP} PID del padre del proceso actual

Explicaré estos comandos en detalle, pero antes de eso, un resumen rápido del proceso, PID y PPID.

Conceptos básicos del proceso de Linux

Todo lo que se ejecuta en su sistema se ejecuta a través de algo conocido como proceso, que es simplemente la instancia en ejecución de un programa.

A todos los procesos que se ejecutan en su sistema se les asignan identificadores. Estos pueden ser útiles si desea monitorear el proceso (por examplecomo para ver cuánta memoria o CPU está utilizando), o tal vez si desea finalizarlo si comienza a bloquearse o simplemente actúa un poco raro.

Los identificadores que se adjuntan a todos estos procesos se conocen como PID y PPID.

¿Qué es un PID?

PID significa “ID de proceso”. Nuevamente, este es simplemente el identificador que se adjunta a un programa cuando comienza a ejecutarse y puede ser útil si necesita interactuar con el proceso de una forma u otra.

¿Qué es un PPID?

PPID está bastante relacionado con un PID. PPID significa “ID de proceso principal” y, si aún no lo obtuvo, simplemente representa el proceso que creó el proceso que está verificando.

Para example, digamos que tenemos dos procesos. Uno se llama “generador” y tiene un ID de proceso (o PID) de 7234. Nuestro segundo proceso, “cliente de correo electrónico”, tiene un ID de proceso de 7456 cuando lo creamos. Nuestro programa generador inicia nuestro cliente de correo electrónico, lo que da como resultado que nuestro cliente de correo electrónico tenga un PID de 7456 y un PPID de 7234, ya que el generador (que tenía el PID de 7234) es lo que generó el cliente de correo electrónico.

Ahora que ha repasado lo básico, veamos cómo obtener la ID del proceso en Linux.

Obtener el PID de un proceso

Lo importante aquí es saber el nombre del proceso cuyo PID desea encontrar.

Si conoce el nombre exacto del proceso puede obtener su ID de proceso usando el pidof mando:

                      
                        pidof exact_process_name
                      
                    

Es más fácil decirlo que hacerlo porque es posible que no siempre sepa el nombre exacto del proceso. Lo bueno aquí es que pidof El comando funciona con la finalización de la pestaña, por lo que si conoce las primeras letras del nombre del proceso, puede presionar la pestaña para obtener sugerencias coincidentes.

El comando pidof funciona con la finalización de pestañas.

Sin embargo, es posible que eso no siempre funcione si el nombre del proceso no coincide con lo que cree que se llama. Para exampleel proceso de Edge navegador en Linux se llama msedge . No comienza con ‘borde’ y la finalización de pestañas no funcionará si se enfoca en ‘borde’.

Entonces, lo que puede hacer es recurrir al comando ps en Linux para enumerar todos los procesos en ejecución de todos los usuarios y luego usar grep en la salida para filtrar el resultado.

                      
                        ps aux | grep -i partial_process_name
                      
                    

Hay un comando dedicado que combina las características del comando ps y grep y, como era de esperar, se llama pgrep :

                      
                        pgrep partial_or_exact_process_name
                      
                    

La salida predeterminada muestra solo los PID sin ninguna información sobre el proceso. Esto podría ser problemático si hay más de un ID de proceso devuelto para el término buscado.

Por lo tanto, sugiero usar la función de listado para asegurarse de obtener el PID del proceso deseado.

                      
                        pgrep -l partial_or_exact_process_name
                      
                    
comando pgrep example

También puede usar el comando superior para obtener la información del proceso, pero no se puede usar en scripts.

?Puede usar el comando pstree para obtener los PID de todos los procesos en ejecución en su sistema Linux: pstree -p -a

Obtener PPID del PID de un proceso secundario

Una vez que conoce el PID de un proceso, es fácil encontrar el PPID para ese proceso.

Simplemente puede ejecutar el siguiente comando, reemplazando PID con el ID del proceso actual (hijo):

                      
                        ps -o ppid= -p PID
                      
                    

En un shell, el comando anterior y ${PPID} ambos deben devolver la misma salida:

¡Y eso es todo lo que hay que hacer para encontrar PID y PPID!

Comprobación del PID y PPID del proceso que se está ejecutando actualmente

Si está en un shell como Bash, es extremadamente fácil encontrar el PID y el PPID del proceso de llamada (que normalmente será el shell).

Bash almacena el valor del PID bajo el $$ variable, y el PPID bajo el ${PPID} variable:

                        
                          # Prints the PID.
echo "$$"

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

Comandos para encontrar el PID y PPID del proceso actual.

De esta forma, puede obtener el ID de proceso de shell y subshell.

PID y PPID del shell actual

¡Y es así de fácil! Encontrar los PID y PPID de otros procesos tampoco es mucho más difícil.

Terminando

Ahora debería saber todo lo que necesita para encontrar tanto PID como PPID para ejecutar procesos en su sistema.

Si necesita ayuda para que algo funcione, o simplemente tiene algunas preguntas restantes, no dude en dejar eso y cualquier otra cosa en los comentarios a continuación.

Related Posts