Bienvenidos a este capítulo del Curso de Linux para Hackers – Gestión de Procesos II. 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 esta sección:

  1. Localización de procesos por nombre con pidof y pgrep: cómo obtener el PID de un proceso a partir de su nombre.
  2. Prioridad de procesos con nice: cómo ajustar la prioridad de un proceso al iniciarlo.
  3. Cambio de prioridad con renice: modificar la prioridad de un proceso en ejecución.
  4. Consulta de ayuda y manual (man): dónde encontrar información detallada sobre pidof, pgrep, nice y renice.

Localización del proceso mediante el comando pidof y pgrep

El comando pidof también nos permite localizar el proceso. Si queremos rastrear un proceso por su nombre, el comando pidof nos será muy útil. Muestra los PID de los procesos cuando se utiliza con el nombre del proceso.

Para localizar el PID de un proceso, ejecute el comando pidof de la siguiente manera:

pidof nombre_proceso  

Si tenemos el proceso en ejecución con el nombre exacto nano , ejecute el comando de la siguiente manera para obtener sus PID.

pidof nano

Considere el siguiente resultado:

El comando pidof es otra herramienta en Unix/Linux que permite obtener el ID de proceso (PID) de programas que están actualmente en ejecución, a diferencia de pgrep, que tiene opciones más avanzadas de filtrado. pidof es especialmente útil cuando solo necesitas rápidamente el PID de un proceso específico para tareas como matar el proceso o monitorearlo.

La sintaxis básica de pidof es:

pidof [opciones] <nombre_del_programa>

Aquí tienes algunos ejemplos prácticos de cómo usar pidof en Linux.

Ejemplos de Uso de pidof

Obtener el PID de un proceso específico:Este comando devolverá el PID de un proceso que coincide con el nombre dado. Por ejemplo, si queremos encontrar el PID del proceso nginx:

pidof nginx 

Esto devolverá uno o varios PIDs si hay múltiples instancias de nginx en ejecución.

Verificar si un proceso está activo:Si deseas verificar si un proceso está en ejecución, puedes combinar pidof con un condicional. Esto es útil para scripts de shell que necesitan verificar el estado de un servicio.

if pidof nginx > /dev/null; 
then echo "Nginx está en ejecución" 
else echo 
"Nginx no está en ejecución" 
fi

Matar un proceso usando pidof:Puedes usar pidof junto con kill para detener un proceso específico. Esto es útil cuando necesitas finalizar un programa sin conocer su PID de antemano.

kill $(pidof nginx) 

O para forzar la finalización, podrías usar:

kill -9 $(pidof nginx)

Obtener PIDs de varios procesos a la vez:Si deseas obtener los PIDs de varios procesos en una sola línea, pidof permite hacerlo. Por ejemplo, para obtener los PIDs de nginx y apache2 al mismo tiempo:

pidof nginx apache2 Esto listará los PIDs de todos los procesos coincidentes.

Obtener el PID del proceso padre (PPID):Con la opción -s, pidof devuelve solo un PID, normalmente el de la instancia principal de un proceso, o su proceso padre. Esto puede ser útil si solo necesitas el primer PID:

pidof -s nginx

Ejecutar una acción solo si un proceso específico está corriendo:Puedes utilizar pidof dentro de un script de shell para ejecutar comandos condicionalmente. Por ejemplo, supongamos que quieres reiniciar nginx solo si el proceso no está en ejecución:

pidof nginx > /dev/null || systemctl restart nginx 

Aquí, el comando systemctl restart nginx solo se ejecutará si pidof no encuentra ningún proceso nginx en ejecución.

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

     man pidof

    pgrep – Comando para Buscar Procesos por Nombre

    pgrep es una herramienta en Unix/Linux que permite buscar procesos en ejecución basándose en criterios específicos, generalmente el nombre del proceso. Es extremadamente útil para identificar procesos que están ejecutándose sin tener que inspeccionar manualmente con ps aux o top.

    La sintaxis básica de pgrep es:

    pgrep [opciones] <nombre_proceso>

    Ejemplos de Uso de pgrep

    Buscar el ID de un proceso específico:

    Imagina que quieres saber el ID de proceso (PID) de todos los procesos llamados nginx.

    grep nginx 

    Esto devolverá una lista de todos los PIDs asociados con nginx, si está ejecutándose.

    Combinar con ps para obtener detalles de procesos:

    Si deseas ver detalles más completos de los procesos encontrados, puedes combinar pgrep con ps:

    ps -fp $(pgrep nginx) 

    Esto usará pgrep para encontrar los PIDs de nginx y luego ps para mostrar detalles detallados de esos procesos específicos.

    Usar patrones de búsqueda:

    pgrep permite el uso de patrones para buscar procesos con coincidencias parciales. Por ejemplo, si tienes un proceso cuyo nombre incluye “java” (como java-server o java-client), puedes hacer lo siguiente:

    grep java 

    Esto te devolverá los PIDs de todos los procesos que incluyan “java” en su nombre.

    Buscar procesos de un usuario específico:

    Con la opción -u, puedes especificar el usuario que posee el proceso. Por ejemplo, para buscar procesos de nginx que pertenecen al usuario root:

    pgrep -u root nginx

    Buscar por el grupo de procesos:A veces, un proceso específico puede estar en un grupo de procesos. Para buscar estos, puedes usar -G seguido del ID de grupo (GID):

    pgrep -G 1000 nginx 

    Esto solo mostrará procesos nginx que pertenezcan al grupo con GID 1000.

    Ejecutar una acción si el proceso está activo:

    Puedes combinar pgrep con && o || para ejecutar comandos condicionales. Por ejemplo, reiniciar un servicio solo si el proceso nginx no está activo:

    pgrep nginx || systemctl restart nginx 

    Aquí, el comando systemctl restart nginx solo se ejecutará si pgrep no encuentra procesos nginx activos.

    Mostrar solo un número limitado de resultados:

    Si solo quieres los primeros 3 PIDs encontrados para nginx:

    pgrep -n -l -c nginx 

    El -n es para buscar el último proceso lanzado, -l muestra el nombre, y -c cuenta las coincidencias

      El comando pgrep tiene más opciones que puedes explorar

      pgrep --help

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

       man pgrep

      Diferencias Principales entre pidof y pgrep

      • pidof es más simple y generalmente solo requiere el nombre exacto del proceso, mientras que pgrep permite expresiones regulares y opciones avanzadas de filtrado.
      • pgrep permite especificar el usuario del proceso, grupos de procesos y patrones en los nombres, mientras que pidof solo busca por el nombre exacto.

      En resumen, pidof es ideal cuando solo necesitas rápidamente el PID de un proceso específico, y pgrep es útil para búsquedas de procesos más complejas o detalladas.

      NICE

      Linux puede ejecutar muchos procesos a la vez, lo que puede reducir la velocidad de algunos procesos de alta prioridad y generar un rendimiento deficiente. Para evitar esto, puedes indicarle a tu máquina que priorice los procesos según tus requisitos.

      Esta prioridad se llama Niceness en Linux, y tiene un valor entre -20 a 19. Cuanto menor sea el índice de Niceness, mayor será la prioridad otorgada a esa tarea. El valor predeterminado de todos los procesos es 0.

      Para iniciar un proceso con un valor de amabilidad distinto del valor predeterminado, utilice la siguiente sintaxis

      nice -n 'Valor' nombre del proceso

      Si ya hay algún proceso ejecutándose en el sistema, entonces puedes ‘Renice’ su valor usando la sintaxis.

      renice 'valor' -p 'PID'

      Para cambiar la Niceness, puede utilizar el comando ‘top’ para determinar el PID (identificación del proceso) y su valor Nice (NI). Luego utilice el comando renice para cambiar el valor.

      Entendamos esto con un ejemplo.

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

      El comando renice tiene más opciones que puedes explorar

      renice --help

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

       man renice

      Resumen de los puntos clave:

      1. Localización de procesos con pidof
        El comando pidof permite encontrar el PID de un proceso especificando su nombre. Por ejemplo, pidof nano devuelve el PID de todos los procesos activos con el nombre “nano”. Esto resulta útil para identificar el PID de un proceso conocido.
      2. Filtrado de procesos con pgrep
        Similar a pidof, el comando pgrep permite localizar procesos por nombre y cuenta con más opciones para filtrar resultados. Con pgrep, se puede buscar un proceso específico con opciones avanzadas (consultar pgrep --help o man pgrep para más detalles).
      3. Prioridad de procesos con nice
        La “Niceness” determina la prioridad de los procesos, con valores entre -20 (máxima prioridad) y 19 (mínima prioridad). Para iniciar un proceso con una prioridad específica, utiliza nice -n <valor> nombre_proceso. El valor predeterminado es 0, y un valor menor indica mayor prioridad.
      4. Modificar prioridad con renice
        Para cambiar la prioridad de un proceso en ejecución, usa renice, especificando el nuevo valor de “Niceness” y el PID del proceso: renice <valor> -p <PID>. Primero, puedes identificar el PID y la prioridad actual con el comando top o ps.
      5. Consulta de ayuda (man) para cada comando
        Los manuales (man pidof, man pgrep, man nice, man renice) y opciones de ayuda (--help) son esenciales para entender a fondo las opciones avanzadas y configuraciones de cada comando en la administración de prioridades y localización de procesos en Linux.

      Pon en práctica lo aprendido

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

      Preguntas

      1. ¿Para qué se utilizan los comandos pidof y pgrep?
      2. ¿Cómo se usa el comando pidof para localizar el PID de un proceso?
      3. ¿Qué hace el comando pgrep y qué ventaja ofrece respecto a pidof?
      4. ¿Qué es el valor de Niceness y cómo afecta a los procesos en Linux?
      5. ¿Cuál es el rango de valores del Nice y qué representa un valor más bajo o más alto?
      6. ¿Cómo se inicia un proceso con una prioridad diferente a la predeterminada utilizando nice?
      7. ¿Para qué sirve el comando renice y cómo se utiliza?
      8. ¿Qué comando permite ver el PID y el valor Nice de los procesos en ejecución?
      9. ¿Cómo se cambia el valor de Niceness de un proceso ya en ejecución?
      10. ¿Dónde se puede obtener más información detallada sobre pidof, pgrep, nice y renice?

      Ejercicios

      1. Localice el PID de un proceso en ejecución, como nano, usando pidof y describa el resultado.
      2. Explique las diferencias entre pidof y pgrep para localizar procesos en Linux.
      3. Ejecute el comando pgrep <nombre de proceso> con un proceso en ejecución en su sistema y explique la salida.
      4. Utilice el comando nice para iniciar un proceso con un valor de prioridad específico y verifique su valor Nice con top.
      5. Cambie la prioridad de un proceso en ejecución con renice y verifique el cambio con top.
      6. Ejecute nice -n -10 <nombre de proceso> y explique la prioridad otorgada al proceso.
      7. Inicie un proceso en segundo plano con un valor Nice de 15 y verifique que el valor se mantenga usando ps.
      8. Consulte pgrep --help y mencione dos opciones avanzadas que considere útiles.
      9. Investigue y explique la función de renice --help para ajustar la prioridad de varios procesos simultáneamente.
      10. Consulte el manual de nice y explique cómo ejecutar un proceso con la máxima prioridad posible.

      Respuestas a las Preguntas

      1. Comandos pidof y pgrep: Ambos localizan el PID de procesos en ejecución. pidof busca por nombre exacto del proceso, mientras que pgrep permite búsquedas más flexibles.
      2. Uso de pidof: pidof <nombre_proceso> muestra el PID del proceso si el nombre es exacto.
      3. Comando pgrep: Localiza procesos por nombre de manera flexible, permitiendo expresiones regulares para filtrar la búsqueda.
      4. Valor de Niceness: Prioridad de un proceso, donde valores más bajos (-20) aumentan la prioridad, y valores altos (19) disminuyen la prioridad.
      5. Rango de Nice: De -20 a 19; un valor menor indica mayor prioridad.
      6. Iniciar proceso con nice: nice -n <valor> <proceso> ajusta la prioridad de inicio del proceso.
      7. Comando renice: Cambia la prioridad de un proceso en ejecución, identificado por su PID.
      8. Ver PID y Nice: El comando top muestra tanto el PID como el valor de Nice de los procesos.
      9. Cambiar Niceness con renice: renice <valor> -p <PID> ajusta la prioridad de un proceso existente.
      10. Obtener ayuda: Usando man para pidof, pgrep, nice, y renice, o con --help en cada uno.

      Respuestas a los Ejercicios

      1. Uso de pidof para obtener el PID: pidof nano muestra el PID de nano si está en ejecución. Ejemplo: 1234.
      2. Diferencias entre pidof y pgrep: pidof busca solo coincidencias exactas, mientras que pgrep puede buscar por patrones y expresiones regulares.
      3. Ejecutar pgrep <nombre de proceso>: Muestra los PIDs que coinciden con el nombre o patrón ingresado. Útil para procesos con nombres parciales.
      4. Ejecutar nice y verificar con top: Ejecutar nice -n 10 nano y observar en top muestra NI=10 para nano, indicando prioridad ajustada.
      5. Cambiar prioridad con renice: renice 5 -p 1234 cambia la prioridad del proceso con PID 1234 a NI=5. Verificar en top.
      6. Ejecutar nice -n -10 <nombre de proceso>: Otorga alta prioridad al proceso (NI=-10).
      7. Iniciar proceso en segundo plano con Nice 15: nice -n 15 ls -l &, se verifica en ps aux que NI=15.
      8. Opciones avanzadas de pgrep --help:
        • -l: Muestra el nombre del proceso junto al PID.
        • -u <usuario>: Muestra solo procesos de un usuario específico.
      9. Usar renice --help para prioridad de varios procesos: renice puede ajustar todos los procesos de un usuario o grupo.
      10. Ejecutar con máxima prioridad usando nice: nice -n -20 <proceso> inicia el proceso con prioridad máxima (valor más bajo de Nice).

      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!!!