Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial explora los conceptos fundamentales de la identificación de procesos en el sistema operativo Linux. Aprenderá cómo listar y monitorear los procesos en ejecución, comprender el concepto de identificadores de proceso (PIDs, por sus siglas en inglés) y aprovechar los PIDs para el control de procesos. Dominar estas habilidades es esencial para los administradores de sistemas Linux y los desarrolladores para administrar y solucionar problemas de sus sistemas de manera efectiva.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/killall("Multi-Process Killing") linux/ProcessManagementandControlGroup -.-> linux/pkill("Pattern-Based Killing") linux/ProcessManagementandControlGroup -.-> linux/wait("Process Waiting") linux/ProcessManagementandControlGroup -.-> linux/bg_process("Background Management") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/kill -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/killall -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/pkill -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/wait -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/bg_process -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/ps -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} linux/top -.-> lab-409851{{"Cómo encontrar el identificador de proceso de un proceso en ejecución en Linux"}} end

Comprender la identificación de procesos en Linux

En el sistema operativo Linux, cada proceso en ejecución se le asigna un identificador único conocido como Identificador de Proceso (PID, por sus siglas en inglés). Comprender cómo identificar y gestionar procesos es una habilidad fundamental para los administradores de sistemas Linux y los desarrolladores. Esta sección explorará los conceptos básicos de la identificación de procesos en Linux, incluyendo cómo recuperar información sobre los procesos y aprovechar los PIDs para el control de procesos.

Concepto de identificación de procesos

En Linux, un proceso es una instancia de un programa en ejecución. A cada proceso se le asigna un PID único, que es un valor entero que sirve como identificador del proceso. El PID se utiliza para hacer referencia al proceso e interactuar con él, como enviar señales, monitorear su estado o terminarlo.

El rango de PIDs en Linux generalmente comienza desde 1 (el proceso init) y puede llegar a un valor máximo, que suele ser 32767 (en sistemas de 32 bits) o 4194303 (en sistemas de 64 bits). Cuando se crea un nuevo proceso, el sistema operativo le asigna el siguiente PID disponible.

Recuperar información sobre procesos

Puedes utilizar varios comandos de Linux para listar y monitorear los procesos en ejecución, como:

## List all running processes
$ ps -ef

## List processes owned by the current user
$ ps -u

## List processes in a tree-like hierarchy
$ pstree

Estos comandos proporcionan información detallada sobre cada proceso, incluyendo el PID, el usuario que inició el proceso, el comando utilizado para iniciar el proceso y las relaciones padre-hijo del proceso.

graph TD init(init process) init --> sshd sshd --> bash bash --> ps

En el ejemplo anterior, el comando ps es un proceso hijo de la shell bash, que es un proceso hijo del demonio sshd, que es en última instancia un proceso hijo del proceso init (el primer proceso iniciado por el núcleo de Linux).

Aprovechar los identificadores de proceso para el control de procesos

El PID se puede utilizar para interactuar con un proceso específico, como enviar señales a él. Por ejemplo, puedes utilizar el comando kill para terminar un proceso:

## Terminate a process by its PID
$ kill 12345

También puedes utilizar el PID para monitorear el estado de un proceso, su uso de recursos y otras características utilizando comandos como top, htop o strace.

Al comprender la identificación de procesos en Linux, puedes administrar y controlar de manera efectiva los procesos que se ejecutan en tu sistema, lo cual es esencial para las tareas de administración del sistema, solución de problemas y desarrollo de aplicaciones.

Listar y monitorear procesos en ejecución

Listar y monitorear de manera efectiva los procesos en ejecución es una tarea crucial para los administradores de sistemas Linux y los desarrolladores. Esta sección explorará los diversos comandos y técnicas disponibles en Linux para listar, filtrar y monitorear los procesos en ejecución.

Listar procesos en ejecución

El comando principal utilizado para listar los procesos en ejecución en Linux es ps (estado del proceso). El comando ps proporciona una instantánea de los procesos actuales y su información asociada, como el identificador de proceso (PID), el usuario, el uso de CPU y memoria, y el comando utilizado para iniciar el proceso.

A continuación, se presentan algunas variaciones comunes del comando ps:

## List all running processes
$ ps -ef

## List processes owned by the current user
$ ps -u

## List processes in a tree-like hierarchy
$ ps -ejH

También puedes utilizar el comando top, que proporciona una vista en tiempo real de los procesos en ejecución y su utilización de recursos:

## Monitor running processes in real-time
$ top

Filtrar y ordenar procesos

Para filtrar la lista de procesos en ejecución, puedes utilizar el comando grep en combinación con ps:

## List processes containing the word "nginx"
$ ps -ef | grep nginx

También puedes ordenar la lista de procesos por diversos criterios, como el uso de CPU o memoria, utilizando el comando sort:

## Sort processes by CPU usage in descending order
$ ps -eo pid,user,%cpu,cmd --sort=-%cpu | head -n 10

Monitorear la actividad de un proceso

Para monitorear la actividad de un proceso específico, puedes utilizar el comando strace, que captura y muestra todas las llamadas al sistema realizadas por el proceso:

## Monitor system calls made by the "nginx" process
$ strace -p $(pgrep nginx)

Además, el comando htop proporciona una vista interactiva y en tiempo real de los procesos en ejecución, lo que te permite ordenar, filtrar y realizar diversas acciones sobre los procesos.

Al dominar las técnicas para listar y monitorear los procesos en ejecución, puedes solucionar problemas de manera efectiva, optimizar el rendimiento del sistema y gestionar los procesos que se ejecutan en tu sistema Linux.

Aprovechar los identificadores de proceso para el control de procesos

El identificador de proceso único (PID, por sus siglas en inglés) asignado a cada proceso en ejecución en Linux se puede aprovechar para controlar y gestionar esos procesos. Esta sección explorará cómo utilizar los PIDs para diversas tareas de control de procesos, como enviar señales, monitorear el estado del proceso y la comunicación entre procesos.

Enviar señales a procesos

Uno de los usos más comunes de los PIDs es enviar señales a los procesos. Las señales son una forma de comunicación entre procesos en Linux y se pueden utilizar para realizar diversas acciones en un proceso, como terminarlo, suspenderlo o solicitar comportamientos específicos.

El comando kill se utiliza para enviar señales a los procesos. Por ejemplo, para terminar un proceso con PID 12345, puedes utilizar el siguiente comando:

$ kill 12345

También puedes utilizar el comando kill con diferentes nombres o números de señal para realizar otras acciones, como:

## Send the SIGINT (interrupt) signal to a process
$ kill -SIGINT 12345

## Send the SIGTERM (terminate) signal to a process
$ kill -SIGTERM 12345

## Send the SIGKILL (kill) signal to a process
$ kill -SIGKILL 12345

Monitorear el estado del proceso

El PID también se puede utilizar para monitorear el estado y el uso de recursos de un proceso específico. Comandos como top, htop y ps se pueden utilizar para obtener información detallada sobre un proceso, como su uso de CPU y memoria, el usuario que ejecuta el proceso y el comando utilizado para iniciar el proceso.

Por ejemplo, para ver el uso de recursos en tiempo real de un proceso con PID 12345, puedes utilizar el siguiente comando:

$ top -p 12345

Comunicación entre procesos

Los PIDs también se pueden utilizar para la comunicación entre procesos (IPC, por sus siglas en inglés) en Linux. Un mecanismo de IPC común es el uso de señales, como se mencionó anteriormente. Otro mecanismo de IPC es el uso de memoria compartida, donde los procesos pueden intercambiar datos leyendo y escribiendo en una región de memoria compartida.

Al entender cómo aprovechar los PIDs para el control de procesos, puedes gestionar e interactuar de manera efectiva con los procesos que se ejecutan en tu sistema Linux, lo cual es esencial para las tareas de administración del sistema, solución de problemas y desarrollo de aplicaciones.

Resumen

En este tutorial, has aprendido los conceptos básicos de la identificación de procesos en Linux. Ahora comprendes el concepto de PIDs (identificadores de proceso), cómo recuperar información sobre los procesos utilizando comandos como ps y pstree, y cómo aprovechar los PIDs para interactuar y controlar los procesos en ejecución. Estas habilidades son cruciales para administrar y mantener un entorno Linux saludable, ya seas un administrador de sistemas o un desarrollador. Al aplicar las técnicas cubiertas en este tutorial, puedes monitorear, administrar y solucionar problemas de los procesos en tus sistemas Linux de manera efectiva.