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.
Comando | Descripción |
pidof nombre_del_proceso | Funciona con el nombre exacto del proceso |
pgrep nombre_proceso | Devuelve el PID de todas las coincidencias |
ps -o ppid=-p PID | Obtener el PPID de PID |
$$ | PID del proceso/shell actual |
${PPID | 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 ejemplo, para ver cuánta memoria o CPU está usando), o tal vez si desea finalizarlo si comienza a bloquearse o simplemente actúa un poco extraño.
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á comprobando.
Por ejemplo, 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.
Obteniendo 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
comando:
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 pestañas, por lo que si conoce las primeras letras del nombre del proceso, puede presionar la pestaña para obtener sugerencias coincidentes.
Sin embargo, es posible que eso no siempre funcione si el nombre del proceso no coincide con lo que cree que se llama. Por ejemplo, el proceso para el navegador Edge 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 funciones ps y el comando 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
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 deberían devolver el mismo resultado:
¡Y eso es todo lo que hay que hacer para encontrar PID y PPID!
Comprobando el PID y el 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 $$
y el PPID bajo el ${PPID}
variables:
# Prints the PID.
echo "$$"
# Prints the PPID.
echo "${PPID}"
De esta forma, puede obtener el ID de proceso de shell y subshell.
¡Y es así de fácil! Encontrar los PID y PPID de otros procesos tampoco es mucho más difícil.
Resumiendo
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 pendientes, no dude en dejar eso y cualquier otra cosa en los comentarios a continuación.