Bienvenidos a este capítulo de este Curso de Linux para Hackers – Procesos en Linux. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Conceptos que aprenderás en este artículo:

  1. Definición de proceso: qué es un proceso y cómo se define en el sistema Linux.
  2. Tipos de procesos en Linux: clasificación de procesos en primer y segundo plano.
  3. Daemons: qué son estos procesos especiales y su importancia en el sistema.
  4. Estados de los procesos: los diferentes estados en los que puede estar un proceso en Linux.
  5. Identificación de procesos: cómo se asignan y utilizan los PIDs y PPIDs.
  6. Comando top: uso de esta herramienta para monitorear procesos en tiempo real.
  7. Comandos para manejo de procesos: otros comandos útiles como ps, pgrep y pidof para administrar procesos.
  8. Cómo matar procesos en Linux: instrucciones sobre cómo detener un proceso específico usando el PID.

¿Qué es un proceso?

Una instancia de un programa se denomina proceso. En términos simples, cualquier comando que le dé a su máquina Linux inicia un nuevo proceso.

Tipos de Procesos Existen fundamentalmente 2 tipos de procesos en Linux:

  •  En primer plano: también llamados inactivos. estos procesos fueron inicializados y se encuentran controlados por una sesión de terminal.
  • Segundo plano_ también llamados no interactivos o automáticos. Son procesos que no están ―conectados‖ con una sesión de terminal, no están esperando ninguna interacción por parte del usuario.

¿Qué son los Daemons?

Son procesos especiales que se ejecutan en segundo plano pero que son arrancados al inicio del sistema y deben ser ejecutados siempre, “nunca mueren”. Están configurados para dar algún servicio en particular y pueden ser controlados por el usuario mediante el proceso de arranque del sistema (init). Estados de los procesos en Linux? Durante la ejecución de un proceso cambia de estado dependiendo del entorno y las circunstancias.

En Linux, los procesos están en alguno de los siguientes estados:

§ En Ejecución – en este caso puede estar ejecutándose, es decir que es el proceso que está en el procesador, o puede estar listo es decir que está a la espera de que el procesador se libere para ingresar.

§ En Espera – en este estado, un proceso está inactivo porque necesita que algo suceda, puede estar esperando algún evento de un recurso de sistema o puede estar esperando alguna acción del usuario. Adicionalmente, el kernel también diferencia entre dos tipos de procesos en espera: interrumpible, es decir que se puede modificar mediante una señal e ininterrumpible que está esperando alguna acción del hardware y no puede ser modificado mediante una señal.

§ Detenido – en este estado el proceso ha finalizado, generalmente por haber recibido una señal para hacerlo.

§ Zombie – estos son procesos que están muertos, que no consumen tiempo de procesador pero todavía están presentes en la tabla de procesos que mantiene el kernel.

Como identificar procesos en Linux

Dado que Linux es un sistema operativo multiusuario, cada instancia de proceso debe ser identificado de forma inequívoca por el Kernel. Aquí es donde cobra sentido el PID (Process id) que es un número que identifica a cada proceso como así también el PPID (parent process id, proceso padre) que sería el número del proceso padre, de aquí que los procesos también se pueden categorizar como:

§ Procesos Padre – son procesos que crean subprocesos que dependen directamente de él.

§ Procesos hijos – son procesos creados por otros procesos entiempo de ejecución.

Monitoreo de procesos

Para poder ver en tiempo real cuales procesos están utilizando los recursos del sistema usaremos  el comando top

El comando top

Esta utilidad le informa al usuario sobre todos los procesos que se están ejecutando en la máquina Linux.

El comando top es una herramienta de línea de comandos potente y ampliamente utilizada que proporciona información en tiempo real sobre los recursos del sistema y los procesos en ejecución.

  • Abra la Terminal haciendo clic en el ícono de Terminal en el menú de la aplicación o usando el atajo de teclado Ctrl + Alt + T.
  • Escriba el comando topy presione Enter .

El comando top mostrará una vista en vivo de las estadísticas del sistema, el uso de la CPU, el uso de la memoria y los procesos en ejecución. Presione q para salir del top.

Al utilizar el comando top, los usuarios pueden acceder a información esencial del sistema en un entorno de terminal, lo que lo convierte en una alternativa valiosa para abrir el Administrador de tareas en Kali Linux.

Presione ‘q’ en el teclado para salir de la visualización del proceso.

Tabla de terminología

La terminología es la siguiente:

CampoDescripciónEjemplo 1Ejemplo 2
Identificador PIDEl ID del proceso de cada tarea1525961
UsuarioEl nombre de usuario del propietario de la tareaHogarRaíz
PRPrioridad Puede ser 20 (más alto) o -20 (más bajo)2020
NIEl bonito valor de una tarea00
VIRTMemoria virtual utilizada (kb)177575972
RESMemoria física utilizada (kb)10051
SHRMemoria compartida utilizada (kb)287952
SEstado Hay cinco tipos: ‘D’ = sueño ininterrumpido ‘R’ = corriendo ‘S’ = durmiendo ‘T’ = trazado o detenido ‘Z’ = zombiSR
%CPU% de tiempo de CPU1.71.0
%MEMMemoria física utilizada105.1
TIME+Tiempo total de CPU5:05.342:23.42
ProcesoNombre del comandoPhotoshop.exeXorg

Interfaz de top

Como podrán ver, el comando divide en de 2 partes la pantalla, la superior nos indica datos globales del sistema y debajo hay un listado de los procesos. El tiempo de uptime que significa hace cuanto que está encendido el equipo, al ser una virtual es muy poco tiempo en el ejemplo, solamente 19 minutos. Pero en servidores de uso profesional o corporativo pueden llegar a tener años de uptime, es decir que hace años que no se apagan.

También se puede ver el load average que se trata de la carga que tiene el CPU, como verán hay 3 números de 2 decimales, el primero es el promedio de load average en el último minuto, luego 5 minutos y 10 minutos. Estando en la pantalla de Top, si oprimimos el botón 1 cambiaremos la opción de CPU de 1 a muchos, dependiendo de la configuración del Sistema. Utilizando las teclas < o > cambiaremos la columna mediante la cual están ordenados los procesos.

Existen muchas opciones que podrán visualizar entrando a la pantalla de ayuda con la letra h y para salir de la misma deberán usar la letra q, también pueden consultar el manual con man top. Otra versión con más opciones es el htop pero no viene instalado por default y en situaciones críticas tenemos que estar acostumbrados a poder usar el top dado que podemos estar sin internet cuando lo necesitemos. Por último, la forma de listar procesos que más usaran durante el transcurso de su vida de administradores Linux es el comando ps existen muchísimos flags para ver diferentes datos sobre los procesos y los resultados son dramáticamente diferentes de acuerdo a la combinación de los mismos, a continuación veremos algunas opciones interesantes.

¿Cómo matar un proceso en Linux?

En un sistema operativo, hay muchos programas que se ejecutan en la memoria RAM de la computadora. Estos programas pueden ser ejecutados por el propio sistema operativo o por un usuario; dichos programas se denominan “Procesos “. Por lo general, un proceso tiene su ciclo de vida y se termina por sí solo cuando se completa o cuando lo cerramos manualmente.

Pero, a veces, un proceso puede bloquearse debido a un error en la programación del proceso o por consumir mucha RAM o CPU. En tales casos, debemos eliminar los procesos manualmente para evitar que nuestra máquina se bloquee inesperadamente.

Linux permite utilizar varias herramientas para matar un proceso erróneo. Para matar un proceso, debemos tener la información del proceso, como PID, señal y más .

Localización de los procesos

Para matar un proceso, tenemos que acceder a la información del proceso. Existen varios comandos para rastrear un proceso, como top , ps , pgrep y pidof. El sistema Linux nos permite matar un proceso de varias maneras, como matar un proceso por su nombre o por su identificador de proceso (PID). Por lo tanto, utilizaremos los comandos anteriores según nuestras necesidades.

Localización de los procesos mediante el comando ‘top’

El comando top se utiliza para enumerar todos los procesos que se están ejecutando en un sistema Linux. Muestra información detallada, como PID, nombre de usuario, uso de CPU, tiempo, comando ejecutado y más.

Para localizar los procesos ejecute el comando de la siguiente manera:

 top

El comando anterior mostrará los procesos en ejecución. Considere el siguiente resultado:

Podemos navegar por los procesos desplazándonos hacia arriba y hacia abajo en la terminal. El comando top nos proporciona varios filtros para filtrar los procesos, como por ejemplo nombre del proceso, uso de la CPU, etc. Para salir de la sección superior pulsamos la tecla ‘q’ , nos llevará de nuevo a la terminal. Sin embargo, también podemos utilizar la opción tradicional de salida pulsando las teclas CTRL+C .

Matar un proceso con el comando top

El comando top nos permite localizar y matar el proceso. Es un proceso sencillo para terminar un proceso usando el comando top. Primero, ejecute el comando top para localizar el proceso y presione la tecla ‘k’ mientras se ejecuta el comando. Esto lo sumergirá en el modo de eliminación de procesos, ingrese el PID del proceso que desea eliminar. Considere el siguiente resultado:

El comando top tiene más opciones que puedes explorar

 top –help

También  te recomendamos consultar las páginas man para este comando:

 man top

Resumen de los puntos clave:

  1. Definición de proceso
    Un proceso es una instancia activa de un programa. En Linux, ejecutar un comando crea un proceso, que es manejado por el sistema operativo.
  2. Tipos de procesos
    • En primer plano: procesos visibles que interactúan con la sesión del usuario.
    • En segundo plano: procesos automáticos, independientes de la interacción del usuario.
  3. Daemons
    Los daemons son procesos de segundo plano esenciales que se ejecutan desde el arranque hasta el apagado del sistema para ofrecer servicios. Son gestionados mediante el proceso init.
  4. Estados de los procesos
    Los procesos pueden encontrarse en varios estados según el sistema:
    • En ejecución: activo o listo para ejecutarse.
    • En espera: en pausa, esperando un evento o recurso.
    • Detenido: ha terminado tras recibir una señal.
    • Zombie: finalizado, pero aún registrado en el sistema.
  5. Identificación de procesos (PID y PPID)
    Cada proceso en Linux tiene un identificador único (PID) y, opcionalmente, un proceso padre (PPID) que lo genera.
  6. Monitoreo de procesos con top
    El comando top muestra en tiempo real los recursos que usan los procesos. Muestra información como PID, usuario, prioridad, uso de CPU y memoria, etc., dividiendo la pantalla entre datos generales y detalles de cada proceso.
  7. Comandos para manejo de procesos
    • ps: lista de procesos con información detallada según los flags utilizados.
    • pgrep y pidof: localizan procesos por nombre o PID, siendo útiles para identificar procesos específicos.
  8. Cómo matar un proceso
    Para finalizar procesos problemáticos, Linux permite usar top o kill:
    • Desde top, presiona la tecla k, ingresa el PID del proceso y confírmalo.
    • Desde la terminal, usa el comando kill <PID> o el nombre del proceso.
  9. Ayuda adicional para top
    Acceder a más opciones con top --help o consultar el manual con man top permite explorar funciones avanzadas de esta herramienta para la gestión de procesos en Linux.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas

  1. ¿Qué es un proceso en Linux y cómo se inicia?
  2. ¿Cuáles son los dos tipos principales de procesos en Linux y cuáles son sus características?
  3. ¿Qué son los Daemons y cuál es su propósito en el sistema?
  4. ¿Cuáles son los diferentes estados de un proceso en Linux y qué significa cada uno?
  5. ¿Cómo se identifica de forma única un proceso en Linux y cuál es la función del PID?
  6. ¿Qué diferencias existen entre un proceso padre y un proceso hijo en Linux?
  7. ¿Para qué sirve el comando top en Linux y cómo se accede a él?
  8. ¿Qué información proporciona el comando top sobre los procesos en ejecución?
  9. ¿Qué representa el valor de “load average” en el comando top y cómo se interpreta?
  10. ¿Cómo se puede matar un proceso en Linux usando el comando top y qué pasos se deben seguir?

Ejercicios

  1. Describa el proceso que se crea cuando se ejecuta un comando en una terminal de Linux y sus características.
  2. Enumere y explique las diferencias entre los procesos en primer plano y los procesos en segundo plano.
  3. Identifique los estados de un proceso en Linux y explique cómo cambian de acuerdo con las circunstancias.
  4. Investigue y explique el uso y significado de los campos PID, USER, %CPU, y %MEM en el comando top.
  5. Ejecute el comando top y anote el “load average” en su sistema. Interprete los tres valores obtenidos.
  6. Explique cómo diferenciar entre un proceso padre y un proceso hijo y cómo se identifica cada uno en Linux.
  7. Ejecute el comando ps con distintos flags, como -aux o -ef, y explique las diferencias en los resultados.
  8. Explique qué son los procesos zombies y cómo se generan.
  9. Utilice el comando top y seleccione un proceso para terminarlo. Describa los pasos para matarlo.
  10. Acceda a la ayuda del comando top mediante la letra h. Liste al menos tres comandos adicionales que se pueden realizar desde esta ayuda y explique sus funciones.

Respuestas a las Preguntas

  1. Un proceso en Linux es una instancia en ejecución de un programa, generada al ejecutar un comando en la terminal. Cada vez que el usuario da una instrucción, el sistema crea un nuevo proceso.
  2. Tipos de procesos en Linux:
    • En primer plano: Controlados por una sesión de terminal, requieren interacción del usuario.
    • En segundo plano: Ejecutados sin interacción directa del usuario, conocidos como procesos automáticos.
  3. Daemons son procesos en segundo plano que se inician automáticamente al arrancar el sistema. Proporcionan servicios continuos (como manejo de redes) y están configurados para ejecutarse permanentemente, gestionados por el proceso de arranque.
  4. Estados de los procesos en Linux:
    • Ejecución: Activo o en espera de CPU.
    • Espera: Espera una señal de recurso.
    • Detenido: Se ha detenido su ejecución, generalmente mediante una señal.
    • Zombie: Ha finalizado, pero aún aparece en la tabla de procesos.
  5. Identificación de procesos: Cada proceso tiene un número de identificación único llamado PID (Process ID), mientras que el PPID representa al proceso padre del que proviene.
  6. Procesos Padre e Hijo:
    • Padre: Proceso que inicia otros procesos.
    • Hijo: Proceso generado a partir de un proceso padre.
  7. Comando top: Permite monitorear procesos y el uso de recursos en tiempo real. Se ejecuta con top en la terminal.
  8. Información de top: Muestra detalles como PID, usuario, uso de CPU, memoria y el tiempo total de CPU que lleva cada proceso.
  9. Load average: Indica la carga de CPU en intervalos de 1, 5 y 10 minutos, reflejando la cantidad promedio de procesos en espera de CPU.
  10. Matar un proceso con top: Para finalizar un proceso, ejecute top, presione k, ingrese el PID del proceso y confirme.

Respuestas a los Ejercicios

  1. Descripción del proceso: Un proceso en Linux se genera cuando se ejecuta un comando en la terminal, teniendo un ciclo de vida propio hasta que finaliza o es terminado.
  2. Diferencias entre procesos en primer y segundo plano:
    • Primer plano: Controlados por la terminal y requieren la interacción del usuario.
    • Segundo plano: No interactivos, se ejecutan automáticamente y no requieren de la terminal.
  3. Estados de los procesos: Un proceso puede estar ejecutándose, en espera, detenido o en estado zombie, dependiendo de si necesita un recurso, ha recibido una señal o ha terminado.
  4. Campos en top:
    • PID: Identificador del proceso.
    • USER: Usuario que inició el proceso.
    • %CPU: Porcentaje de CPU usado por el proceso.
    • %MEM: Porcentaje de memoria física en uso.
  5. Interpretación del load average: Si el resultado es 0.5, 0.7, 1.2, indica que en el último minuto el CPU estuvo ocupado al 50%, en los últimos 5 minutos al 70% y en los últimos 10 al 120%.
  6. Diferencias entre proceso padre e hijo: Un proceso padre crea otros procesos (hijos) y se puede identificar con el PPID (Parent Process ID).
  7. Diferencias entre ps -aux y ps -ef:
    • ps -aux: Lista todos los procesos incluyendo los de otros usuarios.
    • ps -ef: Muestra detalles adicionales como PPID y estructura jerárquica.
  8. Procesos zombie: Son procesos que ya han terminado, pero aún tienen una entrada en la tabla de procesos, esperando ser eliminados.
  9. Matar un proceso con top: Al ejecutar top, seleccione un proceso con k, ingrese el PID y confirme para terminarlo.
  10. Comandos en ayuda de top:
    • ‘1’: Muestra o esconde el uso de cada CPU.
    • ‘h’: Abre la pantalla de ayuda.
    • ‘q’: Sale de la visualización de top.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!