Articles

9 formas de encontrar el ID de proceso de un programa en Linux

cuando se trabaja en un sistema Linux, a veces es necesario averiguar qué procesos se están ejecutando y qué PID o PPID está vinculado a él. Se puede utilizar para muchos propósitos.

básicamente, buscamos un PID en Linux para matar a un programa que no responde, lo que puede ser hecho por el administrador de tareas GUI, pero CLI es la forma más eficiente de manejar programas que no responden.

esto es mejor que la GUI, porque a veces las herramientas basadas en GUI pueden no mostrar el proceso oculto todavía en ejecución.,

en este tutorial, le mostraremos cómo encontrar el ID de proceso (PID) de un programa que se ejecuta de muchas maneras en Linux.

Qué es el ID de proceso (PID)

PID se refiere al ID de proceso, que es comúnmente utilizado por la mayoría de los núcleos de sistemas operativos, como Linux, Unix, MacOS y Windows.

Este es un ID único que se asigna automáticamente a cada proceso cuando se crea. Un proceso es una instancia en ejecución de un programa.

Qué es el ID de proceso padre (PPID)

un proceso padre es un proceso que ha creado uno o más procesos hijos., Cada proceso hijo recibe un ID de proceso Parental (PPID), y el proceso padre mata al hijo cuando completa su operación.

le puede interesar leer los siguientes artículos, ya que están relacionados con este tema.

  • Cómo averiguar qué número de puerto está utilizando un proceso en Linux
  • 3 maneras fáciles de matar o terminar un proceso en Linux

cada vez que el ID del proceso se cambia a todos los procesos excepto init. el init es siempre el primer proceso en el sistema y el antepasado de todos los demás procesos. Contiene PID 1.,

El valor máximo predeterminado de PIDs es 32,768. Esto se puede verificar ejecutando el siguiente comando

cat /proc/sys/kernel/pid_max en su computadora.

32,768 es el valor máximo en sistemas de 32 bits, pero se puede establecer en cualquier valor de hasta 2^22 (aproximadamente 4 millones) en sistemas de 64 bits.

Usted puede preguntar, ¿por qué necesitamos tales PIDs tamaño? Esto se debe a que los PIDs no se pueden reutilizar inmediatamente y para evitar posibles errores.,

Puede encontrar el PID de los procesos que se ejecutan en el sistema utilizando los siguientes nueve métodos, como el comando pidof, el comando pgrep, el comando ps, el comando pstree, el comando ss, el comando netstat, el comando lsof, el comando fuser y el comando systemctl.

esto se puede lograr utilizando los siguientes nueve métodos.

  • pidof: pidof – encontrar el ID de proceso de un programa en ejecución.
  • pgrep: pgre – Buscar o señalar procesos basados en el nombre y otros atributos.,
  • ps: ps-informe una instantánea de los procesos actuales.
  • pstree: pstree-muestra un árbol de procesos.
  • ss: ss se utiliza para volcar estadísticas de sockets.
  • netstat: netstat muestra una lista de sockets abiertos.
  • lsof: lsof-lista de archivos abiertos.,
  • fuser: fuser – lista de ID de proceso de todos los procesos que tienen uno o más archivos abiertos
  • systemctl: systemctl – controla el systemd system and service manager

para probar esto, vamos a encontrar el ID de proceso de Apache. Asegúrese de ingresar el nombre de su proceso en lugar de Nosotros.

1) ¿Cómo encontrar un ID de proceso (PID) en Linux, usando el comando pidof?

el comando pidof se utiliza para encontrar el ID de proceso del programa en ejecución. Imprime esos IDs en la salida estándar., Para demostrar esto, vamos a encontrar el ID de proceso’ Apache2 ‘ en el sistema.

# pidof apache2
2594 2365 2364 2363 2362 2361

en la salida anterior puede tener dificultades para identificar el ID del proceso porque muestra todos los PIDs (incluidos el padre y el hijo) contra el nombre del proceso.

así que necesitamos encontrar el proceso padre PID (PPID), que es lo que estamos buscando. Este será el primer número. En mi caso es 3754 y está ordenado en orden descendente.

2) ¿Cómo buscar un ID de proceso (PID) en Linux, usando el comando pgrep?,

el comando pgrep examina los procesos que se están ejecutando actualmente y enumera los identificadores de proceso que coinciden con los criterios de selección.

# pgrep apache2236123622363236423652594

la salida anterior es similar a la salida del comando ‘pidof’, pero ordena los resultados en orden ascendente, lo que muestra claramente que el PID del proceso padre está parado en last.In mi caso es 3754.,

Nota: identificar el ID del proceso padre puede ser problemático cuando se usa el comando’ pidof ‘&’ pgrep’, ya que cada proceso viene con un solo PPID y varios PIDs que no muestran la diferencia entre ellos.

3) ¿Cómo localizar un ID de proceso (PID) en Linux, usando el comando pstree?

el comando pstree muestra los procesos en ejecución como un formato de árbol que es una forma muy conveniente de mostrar la jerarquía de procesos y hace que la salida sea más atractiva visualmente., Si se especifica un nombre de usuario en el comando pstree, muestra todo el proceso propiedad del usuario correspondiente.

pstree combina visualmente ramas idénticas poniéndolas entre corchetes y prefijándolas con el recuento de repeticiones.

# pstree -p | grep "apache2" |-
-+-apache2(2361) | |-apache2(2362) | |-apache2(2363) | |-apache2(2364) | |-apache2(2365) | `-apache2(2594)

sólo Para conseguir que el proceso padre, utilice el siguiente formato.

# pstree -p | grep "apache2" | head -1 |-
-+-apache2(2361)

el comando’pstree’ es mucho mejor que el comando ‘pidof’ & ‘pgrep’ porque separa los procesos padre e hijo que no son posibles por ellos.,

4) ¿Cómo encontrar un ID de proceso (PID) en Linux, usando el comando ps?

el comando ps muestra información sobre una selección de los procesos activos que incluye el ID del proceso (pid = PID), el terminal asociado con el proceso (tname=TTY), el tiempo de CPU acumulado en formato HH:mm:ss (time=TIME) y el nombre del ejecutable (ucmd=CMD). La salida no está ordenada de forma predeterminada.

el ID del proceso padre (PPID) se puede identificar fácilmente en función de la fecha de inicio del proceso de la salida anterior., En nuestro caso el proceso’ Apache2 ‘comenzó en December 11th, que es el proceso padre y los demás el proceso hijo. El PID de Apache2 es 3754.

5) ¿cómo encontrar un ID de proceso (PID) en Linux, usando el comando ss?

el comando ss se utiliza para volcar estadísticas de sockets. Permite mostrar información similar a netstat. Puede mostrar más información TCP y de estado que otras herramientas.

Puede mostrar estadísticas para todo tipo de sockets como paquete, TCP, UDP, DCCP, RAW, dominio Unix, etc.,

# ss -tnlp | grep apache2LISTEN 0 128 :::80 :::* users:(("apache2",pid=3319,fd=4),("apache2",pid=3318,fd=4),("apache2",
,fd=4))

6) ¿cómo encontrar un ID de proceso (PID) en Linux, utilizando el comando netstat?

el comando netstat se utiliza para imprimir conexiones de red, tablas de enrutamiento, estadísticas de interfaz, conexiones de enmascaramiento y membresías de multidifusión. De forma predeterminada, netstat muestra una lista de sockets abiertos.

si no especifica ninguna familia de direcciones, se imprimirán los sockets activos de todas las familias de direcciones configuradas. Este programa está obsoleto. El reemplazo de netstat es ss.

# netstat -tnlp | grep apache2tcp6 0 0 :::80 :::* LISTEN 

7) ¿Cómo encontrar un ID de proceso (PID) en Linux, usando el comando lsof?,

el comando lsof se utiliza para listar archivos abiertos. El comando Linux lsof enumera información sobre los archivos que están abiertos por los procesos que se ejecutan en el sistema.

8) ¿cómo encontrar un ID de proceso (PID) en Linux, usando el comando fuser?

la utilidad fuser escribirá en la salida estándar los ID de proceso de los procesos que se ejecutan en el sistema local que tienen uno o más archivos con nombre abiertos.

# fuser -v 80/tcp USER PID ACCESS COMMAND80/tcp: root 
www-data 3318 F.... apache2 www-data 3319 F.... apache2

9) ¿cómo encontrar un ID de proceso (PID) en Linux, usando el comando systemctl?

el comando systemctl se usa para controlar el administrador de servicios systemd., Este es un reemplazo para la antigua administración del sistema SysVinit, y la mayoría de los sistemas operativos Linux modernos se han movido al systemd.