Bienvenidos a esta Guía Rápida de Linux para Hackers Linux para Hackers #15 Gestión de Usuarios y Grupos. 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.

Índice

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

Lista de aprendizajes del artículo sobre procesos en Linux

  1. Definición de proceso:
    • Comprender qué es un proceso y sus tipos (en primer plano, segundo plano y daemons).
  2. Estados de los procesos:
    • Identificar los estados: ejecución, espera, detenido y zombie.
  3. Identificación de procesos:
    • Uso de PID y PPID para rastrear procesos y entender relaciones entre ellos.
  4. Monitoreo de procesos:
    • Herramientas como top, htop, y ps para observar y gestionar procesos en tiempo real.
  5. Eliminación de procesos:
    • Uso de comandos kill, killall, pkill y xkill para terminar procesos específicos.
  6. Gestión de prioridad:
    • Ajustar prioridad de procesos con nice y renice.
  7. Manejo de procesos en segundo plano:
    • Uso de &, jobs, fg, y bg para administrar procesos en segundo plano.
  8. Persistencia de procesos:
    • Ejecutar procesos de larga duración con nohup para evitar interrupciones.
  9. Comandos específicos para servicios:
    • Uso de systemctl para iniciar, detener y gestionar servicios.
  10. Firewall y puertos:
    • Abrir puertos específicos usando firewall-cmd para servicios como MariaDB.

¿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ó– 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

El comando PS

Este comando significa “Estado del proceso”. Es similar al “Administrador de tareas” que aparece en una máquina Windows cuando usamos Ctrl+Alt+Del. Este comando es similar al comando “top”, pero la información que se muestra es diferente.

Para comprobar todos los procesos que se ejecutan bajo un usuario, utilice el comando:

 ps -ux

Veamos otro ejemplo:

Para más detalles siempre tienen disponible el man de cada comando, es muy importante acostumbrarse ya que es la mejor fuente de información para las tareas de un Admin. Una opción interesante para usar con ps es el flag -ppid donde le podemos indicar que nos liste todos los procesos que dependen de un determinado PID

El PID 1 es el llamado systemd, que se trata del primer proceso que levanta el kernel en el proceso de arranque del sistema. Otra opción muy útil es la -o con la cual le podemos pasar un listado de columnas que queremos ver sobre los procesos: ps -o ppid,pid,uname,comm –ppid=1

Otra opción muy interesante es la que nos permite ordenar los procesos por diferentes columnas —sort, por ejemplo ordenado por consumo de CPU en orden ascendente (los procesos que tienen mayor consumo abajo):

Lo mismo que antes, pero en orden descendente:

También podemos ordenar por utilización de memoria ―—sort=+pmem

Y por último podemos hacer una combinación de las dos cosas

 ps --help
 ps --help all

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

 man ps

Localización de procesos mediante el comando ps y grep

El comando ps es otra forma de mostrar la información del proceso. Hay muchas opciones que se utilizan con el comando ps, como aux, que significa:

  • a : Para mostrar los procesos para todos los usuarios
  • u : Para mostrar los procesos utilizados por un usuario en particular
  • x: Para mostrar todos los procesos. Si no especificamos la opción x, no se mostrará el proceso GUI.

Ejecute el siguiente comando para enumerar todos los procesos en ejecución:

ps -aux

Considere el siguiente resultado:

La salida del comando ps es similar a la del comando top . El nombre del proceso y el PID se indican en las dos primeras columnas, y el nombre del proceso se indica en la columna de la derecha. El comando ps es más útil que el comando top. Nos permite filtrar la salida con el comando grep. Supongamos que queremos filtrar todos los procesos con el nombre de usuario carlos, ejecutamos el comando de la siguiente manera:

ps aux | grep carlos

El comando anterior filtrará todos los procesos especificados mediante el comando grep. Considere el siguiente resultado:

La salida anterior proporciona la funcionalidad del comando ps y del comando grep juntas.

El comando ps tiene más opciones que puedes explorar

ps --help
 ps --help all

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

 man ps

Otro comando muy útil es el ―pstree que nos muestra un árbol de dependencias de los procesos para facilitarnos la vida a la hora de encontrar el padre de una serie de procesos.

 pstree --help

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

 man pstree

Administrar Procesos en Segundo Plano

Para comenzar un proceso en segundo plano, se debe adjuntar el símbolo & luego del comando que vayamos a ejecutar, el proceso que hayamos enviado a segundo plano no leerá ninguna entrada del usuario hasta que lo enviemos nuevamente a primer plano. Como era de esperarse, simplemente se trata de un ls –l que se ejecuta cada 5 segundos. Al mandarlo a segundo plano veremos lo siguiente:

En el ejemplo de arriba pueden ver que utilizamos el programa watch  que nos permite ejecutar un programa en un intervalo de tiempo determinado con el flag -n en este caso le hemos especificado cada 5 segundos. Como le adjuntamos el signo & al finalizar la sentencia del comando que queremos monitorear, en nuestro caso es  ls –l lo enviaremos a segundo plano. Si no lo hiciéramos veríamos el siguiente resultado:

El [1] significa que hay un solo proceso en segundo plano iniciado por este usuario, y el número que le sigue es el PID del proceso Al ejecutar un ps –ef y filtrar por el número de proceso lo podemos encontrar:

Luego utilizaremos los comandos bg y fg para ver los procesos que hay en segundo plano y enviarlos a primer plano de la siguiente manera. 

Por último para ver que procesos están siendo ejecutados en segundo plano utilizaremos el comando jobs.

 watch --help

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

 man watch

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

Comando Nohup

Nohup significa no hang-up , es una utilidad de Linux que mantiene los procesos en ejecución incluso después de salir de la terminal o shell. Impide que los procesos reciban señales SIGHUP (Señal de cuelgue); estas señales se envían al proceso para terminar o finalizar un proceso.

Por lo general, cuando salimos de la terminal, todos los procesos en ejecución se terminan de forma predeterminada. Sin embargo, se muestra una advertencia para el proceso en ejecución. Si un proceso tarda más tiempo del esperado y necesitamos completarlo. En tales casos, un comando nohup es una herramienta útil para mantener el proceso en ejecución en segundo plano. El mejor uso de los comandos nohup es en la verificación de memoria, la sincronización, el reinicio de un servidor y más. También es ventajoso cuando ejecutamos un programa a través de ssh.

En el caso de una conexión ssh, si se interrumpe una conexión, se terminan todos los procesos en ejecución y podemos perder nuestros datos. El comando nohup soluciona este problema, ya que ignora todas las señales de interrupción y permite que el proceso continúe.

Comprobando la versión de nohup

Se trata de una utilidad de línea de comandos predeterminada de un sistema Linux, por lo que no es necesario instalarla. Podemos comprobar la versión instalada ejecutando el siguiente comando:

nohup --versión  

El comando anterior mostrará la versión instalada. Observe el siguiente resultado:

Cómo iniciar un proceso usando nohup

Si desea ejecutar un proceso después de salir de la terminal, ejecute el comando nohup seguido del proceso. Es un proceso sencillo. El proceso seguirá ejecutándose y no se cerrará. Tomemos un ejemplo para entender cómo funciona Nohup. Tenemos un archivo ‘hello.sh ‘, lo abriremos usando el comando Nohup. Ejecute el siguiente comando:

Ahora, el comando cat se ejecutará por completo incluso si cerramos la terminal. Considere el siguiente resultado:

Podemos ver en el resultado anterior que creará un archivo ‘nohup.out’ y le agregará el resultado.

Para mostrar la salida, ejecute el siguiente comando:

 cat nohup.out

Considere el siguiente resultado:

Además, también podemos redirigir la salida a un archivo específico. Para ello, ejecute el comando de la siguiente manera:

 nohup cat carlos.txt > shadow.txt  

El comando anterior redirigirá la salida a un archivo específico, “shadow.txt”. Para verificar la salida, ejecute el comando de la siguiente manera:

 cat shadow.txt

Considere el siguiente resultado:

Iniciar un proceso en segundo plano

Para iniciar un proceso en segundo plano, utilice el símbolo ‘ &’ después del comando. Se ejecutará nuestro proceso en segundo plano. Por ejemplo, si queremos hacer ping a javatpoint.com, ejecute el comando de la siguiente manera:

 nohup ping achicrou.com &

El comando anterior nos hará ping con javatpoint.com y redirigirá el proceso al segundo plano. Para verificar el proceso, ejecute el comando pgrep de la siguiente manera:

pgrep -a ping  

Considere el siguiente resultado:

Para matar el proceso, ejecute el comando kill con el PID indicado.

 kill 3859485

El comando anterior eliminará los procesos en segundo plano. Observe el siguiente resultado:

El comando nohup tiene más opciones que puedes explorar

 nohup --help

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

 man nohup

DF

Esta utilidad informa el espacio libre en disco (disco duro) en todos los sistemas de archivos.

Si desea la información anterior en un formato legible, utilice el comando

'df -h'

El comando df tiene más opciones que puedes explorar

 df --help

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

 man df

FREE

Este comando muestra la memoria libre y utilizada (RAM) en el sistema Linux.

Puedes utilizar los argumentos

free -m para mostrar la salida en MB
free -g para mostrar la salida en GB

El comando free tiene más opciones que puedes explorar

 free --help

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

 man free

Eliminar procesos en Kali Linux

En algunos casos, es posible que haya notado que cuando un proceso de Linux deja de responder o consume muchos recursos, no le queda otra opción que cerrarlo. Sin embargo, este tipo de situaciones no siempre se dan. Por lo tanto, la mayoría de los procesos tienen sus propios métodos de cierre para evitar este tipo de situaciones.

Desafortunadamente, también hay otros tipos de procesos que pueden funcionar mal y no se detienen por sí solos. Por lo tanto, si un proceso en segundo plano en ejecución deja de responder o consume más recursos de los que debería, se hace necesario cerrarlo o cerrarlo mediante un proceso o método conocido como “kill Process” (Matar proceso).

¿Qué procesos puedes eliminar en Linux?

Antes de finalizar o matar un proceso, debe tener en cuenta los permisos necesarios para finalizar un proceso, especialmente cuando no tiene acceso a la cuenta raíz. Sin embargo, si tiene acceso a la cuenta raíz o es el único propietario del sistema, en ese caso, tiene el poder de finalizar cualquier tipo de proceso en cualquier momento. De lo contrario, un usuario normal que no tenga acceso a la cuenta raíz puede usar “sudo” en el prefijo del comando al finalizar un proceso mediante la línea de comandos.

¿Qué pasa cuando matas un proceso?

Cada vez que un usuario finaliza un proceso, en realidad envía una señal al proceso de destino, que se denomina señal de finalización o mensaje de terminación. Sin embargo, existen varios tipos de mensajes de finalización y algunos de ellos son los siguientes:

  • SIGKILL: generalmente se considera la forma definitiva de matar un proceso. Siempre matará un proceso y lo hará de manera abrupta, generando un error fatal. SIGKILL siempre debería funcionar. Sin embargo, si SIGKILL no funciona, significa claramente que el sistema operativo ha fallado.
  • SIGTERM: generalmente se considera un método menos eficaz porque intenta lo mejor que puede para matar un proceso, pero a diferencia de SIGKILL, se puede bloquear o manejar de otra manera. Por lo tanto, se puede considerar una forma más suave de intentar terminar un proceso.

Entonces, podemos decir que para la mayoría de los propósitos, será mejor utilizar los métodos que utilizan la señal “SIGKILL” para matar un proceso de la manera más segura y rápida.

¿Cómo matar un proceso?

Existen múltiples formas de matar un proceso, pero aquí veremos el método más utilizado y universal que puedes utilizar en cualquier sistema operativo basado en Linux. Aunque matar un proceso suele incluir tres pasos principales que veremos uno por uno.

Matar un proceso

Ahora que hemos rastreado los procesos, podemos matar un proceso. Hay varios comandos que se utilizan para matar un proceso, como kill , kill , top y pkill.

Antes de matar un proceso, es necesario saber qué procesos podemos matar. A continuación, se presentan algunos puntos esenciales sobre la eliminación de procesos:

  • Si es un usuario normal, solo puede eliminar los procesos que le pertenecen. No puede eliminar los procesos que ejecutan otros usuarios. Los comandos top y ps aux muestran los usuarios con el proceso relacionado.
  • Un usuario root puede matar todos los procesos, pero también podemos agregar sudo antes de cualquier comando para ejecutarlo como root.
  • En Linux, cuando se termina un proceso, se transmite una señal especial a los procesos. Aunque existen varios tipos de señales en Linux, en este caso, Linux se ocupa de las señales SIGKILLS y SIGTERM . De forma predeterminada, Linux envía la señal SIGTERM, que termina el proceso sin problemas. Si desea terminar un proceso de forma forzada, utilice SIGKILL en su lugar.
  • Linux conserva el estado de los procesos hasta que se eliminan por completo del sistema. Por lo tanto, los procesos secundarios se mostrarán en la lista de procesos hasta que se elimine un proceso principal.
  • No podemos matar un proceso si se encuentra en “suspensión ininterrumpida “. Esta situación se produce cuando un proceso realiza una operación de entrada/salida. Este estado se puede ver en la octava columna del comando top y ps aux.

Cómo saber el PID

Para utilizar comandos de terminación, es necesario conocer diferentes PID. El PID de un proceso se puede averiguar con el siguiente comando:

Sintaxis:

 ps -A  

Matar un proceso con el comando kill

Los procesos en Linux pueden encontrarse en diferentes estados durante su vida útil, por lo cual a veces tenemos que administrar el estado de los mismos.

Una de las situaciones más común en la administración de procesos es que, ya sea porque el proceso no está reaccionando, el programa se encuentra colgado, o porque simplemente no queremos que siga en ejecución, necesitemos  matarlo. Para ello utilizaremos el comando ―kill.  Si miramos el flag -l podremos ver las posibles señales que podemos enviar a los procesos.

El comando kill es la utilidad más sencilla para matar un proceso; todo lo que necesitamos es el PID de un proceso. Una vez que obtenemos el PID del proceso, es un proceso sencillo. Para terminar un proceso, ejecute el comando kill seguido del PID. Para localizar el PID de un proceso, utilice el comando top o ps aux, como se explicó anteriormente.

Para matar un proceso que tenga PID 5296, ejecute el comando de la siguiente manera:

kill 3421540

Para finalizar un proceso de forma forzada, utilice la opción -SIGKILL o -9:

Kill  -SIGKILL 3423355

El comando anterior finalizará el proceso con PID 3423355

En este ejemplo pueden que le proceso “cacafire” se está ejecutando. Luego de ejecutar el ―kill seguido de los 2 PID que deseo terminar, al ejecutar nuevamente el ―ps Veo que efectivamente el proceso ya no existe.

Otra de las formas de administrar procesos en Linux es mediante el cambio de prioridad de los mismos. Esto quiere decir que podemos darles preferencia a unos u otros para acceder a los recursos del sistema, concretamente al CPU.

Para cambiar la prioridad de un CPU usaremos el comando ―nice o ―renice asignándole un número del -20 a 19 al proceso que queremos modificar. Siendo -20 el valor más elevado, es decir el de mayor prioridad en cuanto a utilización de CPU.  ―nice se utiliza para arrancar un proceso con una determinada prioridad:

En cambio el comando ―renice se utiliza para cambiar la prioridad de un proceso ya existente.

Para ver la prioridad de los procesos utilizaremos el comando ―ps con los flags ―-fl

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

 man kill

Matar un proceso con el comando killall

El comando killall es la técnica más sencilla para matar un proceso si conoce el nombre exacto del proceso, no lo está ejecutando ningún otro usuario y no está en estado Z o D. En el comando kill all, no es necesario localizar el proceso o PID. Para matar un proceso, ejecute el comando de la siguiente manera:

killall nano

El comando anterior finalizará el proceso y cerrará el navegador nano. Observe el siguiente resultado:

Si el comando mata exitosamente el proceso, no dará ningún resultado.

Para matar el proceso a la fuerza, ejecute el comando killall con -SIGKILL de la siguiente manera:

killall -SIGKILL nano

También podemos utilizar -9 en lugar de -SIGKILL. Para matar un proceso de forma interactiva, ejecute el comando de la siguiente manera:

killall -i nano

Para matar un proceso como un usuario diferente, ejecute el comando de la siguiente manera:

sudo killall nombre_del_proceso  

También podemos matar un proceso durante un período de tiempo fijo utilizando los indicadores -o y -y . Para matar un proceso que ha estado ejecutándose durante más de 20 minutos, ejecute el siguiente comando: killall -o 20m process_name

Para matar un proceso que ha estado ejecutándose durante menos de 20 minutos, ejecute el siguiente comando:

killall -y 5s nombre_proceso  

Las abreviaturas para utilizar el período de tiempo son las siguientes:

  • segundos: s
  • minutos: m
  • horas: h
  • días: d
  • semanas: w
  • meses: M
  • años: y

El comando killall tiene más opciones que puedes explorar

killall --help

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

 man killall

Matar un proceso con el comando pkill

A veces no sabemos el nombre exacto del proceso; en tal caso, el comando pkill será la utilidad más útil para matar un proceso. Nos permite matar un proceso ingresando el nombre que coincida con el proceso. Por ejemplo, queremos matar todos los procesos con el nombre que coincida con nano, ejecutamos el comando de la siguiente manera:

 pkill nano 

Cerrará todos los procesos que contengan el nombre java. De manera similar, para cerrar un proceso de Firefox, ejecute el siguiente comando:

Si el comando pkill se ejecuta correctamente, no mostrará ningún resultado.

Para matar un proceso a la fuerza mediante el comando pkill, ejecútelo de la siguiente manera:

pkill -SIGKILL nombre_del_proceso

También podemos utilizar -9 en lugar de -SIGKILL.  

El comando pkill tiene más opciones que puedes explorar

pkill --help

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

 man pkill

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:

Matar un proceso mediante el Monitor del sistema

También podemos finalizar un proceso mediante el entorno gráfico de Linux llamado monitor del sistema. Para finalizar un proceso mediante el monitor del sistema, siga los pasos que se indican a continuación:

Paso 1: Busque o explore el monitor del sistema, presione Enter para abrirlo. En Kali puede acceder dando clic en el administrador arriba a ala derecha:

Paso 2: Se mostrarán todos los procesos en ejecución de su sistema Linux. Observe la siguiente imagen:

Paso 3: Busque el proceso que desea finalizar y haga clic derecho sobre él.

Paso 4: Selecciona la opción Matar. También podemos usar las teclas CTRL+K para matarlo.

Nombres y números de señales comunes

A continuación se incluye una lista de algunos nombres y números de señales comunes. Tenga en cuenta que estos nombres y números de señales pueden variar. Para obtener información completa sobre las señales, consulte la página del manual de la señal con el comando “man 5 signal” o “man 7 signal”.

Sintaxis:

 kill -l  

Ejemplo:

Para matar un proceso que tenga PID 2408, use el siguiente comando

kill -9 2408

Para utilizar el comando xkill

Para utilizar el comando xkill cuando desee cerrar un proceso, escriba xkill en la terminal. El cursor adoptará la forma de una x. Haga clic en la ventana que desee cerrar utilizando el cursor x. Recibirá el siguiente mensaje, como se muestra en la siguiente captura de pantalla.

Administración de Servicios

El proceso con PID 1 llamado systemd, dijimos que este proceso arranca una serie de servicios del sistema operativo de los cuales hacemos uso normalmente, tanto como usuarios comunes o como administradores del sistema. Además de iniciar los servicios al arranque del sistema, ―systemd nos permite administrarlos de una forma muy conveniente y sencilla.

systemd es el sistema de inicio y gestor de servicios predeterminado en la mayoría de distribuciones modernas de Linux, como Ubuntu, Debian, CentOS y Fedora. Su propósito principal es administrar el arranque del sistema, manejar procesos y servicios, y también gestionar recursos y dependencias de una manera centralizada.

Comandos Básicos de systemd

La herramienta principal para trabajar con systemd en la terminal es systemctl, que permite administrar servicios y obtener información sobre el sistema y el estado de los procesos.

Aquí tienes los usos más comunes de systemd y ejemplos de cómo utilizar systemctl.

Administración de Servicios

  1. Iniciar un servicio: Para iniciar un servicio específico, usa el siguiente comando. Por ejemplo, para iniciar nginx:
    • sudo systemctl start nginx
  2. Detener un servicio: Esto detendrá el servicio de inmediato. Siguiendo con el ejemplo de nginx:
    • sudo systemctl stop nginx
  3. Reiniciar un servicio: Útil cuando necesitas reiniciar un servicio después de cambios en su configuración:
    • sudo systemctl restart nginx
  4. Recargar la configuración de un servicio sin interrumpirlo: Si el servicio permite la recarga de configuración sin necesidad de reiniciarse, puedes utilizar:
    • sudo systemctl reload nginx
  5. Habilitar un servicio para que inicie al arranque: Este comando asegura que el servicio esté activo cada vez que el sistema arranque:
    • sudo systemctl enable nginx
  6. Deshabilitar un servicio para que no inicie al arranque: Esto detiene el servicio de iniciar automáticamente al arrancar:
    • sudo systemctl disable nginx
  7. Reiniciar el servicio solo si está activo: Para evitar interrupciones en servicios que no están en ejecución, usa:
    • sudo systemctl try-restart nginx
  8. Iniciar un servicio solo si está detenido: Este comando inicia el servicio solo si no está en ejecución actualmente:
    • sudo systemctl start nginx || echo "Nginx ya está en ejecución"

Verificar el Estado de Servicios y Unidades

  1. Comprobar el estado de un servicio: Esto muestra información detallada sobre el estado del servicio, incluyendo errores recientes y registros:
    • systemctl status nginx
  2. Ver el estado de todos los servicios: Para obtener una lista de todos los servicios, su estado y si están activados para iniciar al arranque:
    • systemctl list-units --type=service
  3. Ver dependencias de un servicio: Para conocer las dependencias de un servicio y cómo se relaciona con otros procesos:
    • systemctl list-dependencies nginx
  4. Monitorear servicios fallidos: Esto muestra todos los servicios que han fallado desde el último arranque:
    • systemctl --failed

3. Gestión de Unidades de systemd

  1. Recargar systemd para aplicar cambios: Después de editar o crear archivos de unidad, recarga systemd para aplicar los cambios:
    • sudo systemctl daemon-reload
  2. Verificar y depurar dependencias de una unidad: El siguiente comando muestra las dependencias de una unidad y puede ayudarte a identificar posibles problemas en el arranque:
    • systemctl show -p After <unidad>

4. Control de la Secuencia de Inicio

  1. Reiniciar el sistema: Para reiniciar el sistema operativo completo con systemd:
    • sudo systemctl reboot
  2. Apagar el sistema: Este comando apaga el sistema usando systemd:
    • sudo systemctl poweroff
  3. Cambiar a un “target” específico: Los “targets” en systemd son como los “runlevels” en sistemas SysV, definiendo estados específicos del sistema (como graphical.target o multi-user.target). Para cambiar al modo multiusuario (sin interfaz gráfica):
    • sudo systemctl isolate multi-user.target
  4. Ver y cambiar el nivel de ejecución o “target” predeterminado: Puedes verificar cuál es el “target” actual con:
    • systemctl get-default
    • Y cambiar el “target” predeterminado para que el sistema arranque en modo gráfico (o en otro target):
      • sudo systemctl set-default graphical.target

5. Monitoreo de Logs del Sistema

  1. Ver logs del sistema en tiempo realjournalctl es la herramienta de systemd para acceder a los registros de logs. Para ver los logs en tiempo real, usa:
    • journalctl -f
  2. Ver logs específicos de un servicio: Esto es útil para verificar errores y mensajes específicos de un servicio, como nginx:
    • journalctl -u nginx
  3. Limitar los logs a una fecha específica: Si deseas ver los logs de una fecha o tiempo específico, puedes usar opciones de filtrado:
    • journalctl --since "2023-01-01" --until "2023-01-02"

6. Resumir: Comandos de Gestión Básica

ComandoDescripción
systemctl start <servicio>Iniciar un servicio.
systemctl stop <servicio>Detener un servicio.
systemctl restart <servicio>Reiniciar un servicio.
systemctl enable <servicio>Habilitar un servicio al arranque.
systemctl disable <servicio>Deshabilitar un servicio al arranque.
systemctl status <servicio>Ver el estado de un servicio.
systemctl daemon-reloadRecargar la configuración de systemd.
systemctl list-unitsListar unidades activas (servicios, sockets).
journalctl -u <servicio>Ver logs específicos de un servicio.

Con estos comandos y técnicas, puedes administrar efectivamente los servicios, procesos y el estado general del sistema usando systemd.

El comando systemd tiene más opciones que puedes explorar

systemd --help

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

 man systemd

Inicio y Detención de Servicios

Para la manipulación de los servicios utilizaremos el comando ―systemctl seguido de algunas opciones muy sencillas. Con ―start seguido del nombre del servicio lo iniciamos y con ―stop lo detenemos. Pero como sabemos si realmente está funcionando? Para eso existe la opción ―status.

Como era de esperarse el sistema me indica que el servicio se encuentra detenido. Una opción muy importante es la de habilitar un servicio, esto se hace mediante la opción ―enable y significa que el servicio arrancará automáticamente una vez que reiniciemos el sistema. Por el contrario la opción ―disable elimina del ―listado de arranque al servicio para que no se inicie cada vez que reiniciamos el sistema por lo cual deberemos hacerlo manualmente en caso de

desearlo. Por último, para poder ver la lista de servicios disponibles se ejecuta el comando ―systemctl―, dado que la lista es largo pueden combinarlo con el comando ―grep utilizando | como hemos visto anteriormente.

Volviendo a nuestro caso de estudio, vamos a dejarlo habilitado para poder utilizarlo sin tener que estar iniciándolo cada vez que reiniciemos el sistema

Vamos nuevamente a iniciarlo para poder comprobar que nuestro Apache se encuentra funcionando correctamente. Lo que haremos ahora es probar si podemos acceder con nuestro navegador web, ya sea Internet Explorer, Firefox o Chrome. Para ello deben abrirlo y en la barra de navegación poner la IP que tienen en su instancia de máquina virtual con Linux, la misma que pusieron en putty para poder acceder a la misma vía ssh.

Si no aparece esto implica que debemos habilitar el puerto donde está escuchando el servidor apache (puerto 80) , para ello vamos a ejecutar el siguiente comando: ―firewall-cmd –zone=public –add-port=80/tcp –permanent

Con esto le decimos al firewall que queremos recibir comunicaciones en el puerto indicado y que sea persistente , es decir que sobreviva a un reboot. Luego tenemos que reiniciar el firewall con el siguiente comando:

―firewall-cmd –reload

Este comando tiene más opciones que puedes explorar

systemctl --help

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

 man systemctl

Hagamos un Ejercicio

1) Instalar el paquete MaríaDB utilizando el comando apt

2) Configurar MariaDB como servicio habilitado (que se inicie automáticamente luego de un reboot) e iniciar el servicio.

3) Verificar que el servicio esté ejecutándose, ya sea mediante la utilidad provista por ―systemd o listando los procesos.

4) Abrir el puerto de firewall necesario para poder acceder a la base de datos MariaDB remotamente.

Puntos clave del artículo con resúmenes

1. Concepto y Tipos de Procesos

  • Proceso: Instancia de un programa ejecutándose en Linux.
  • Tipos:
    • Primer plano: Requiere interacción con la terminal.
    • Segundo plano: No interactivo, corre automáticamente.
    • Daemons: Procesos en segundo plano que inician con el sistema y permanecen activos.

2. Estados de los Procesos

  • En ejecución: Activo o esperando uso del CPU.
  • En espera: Inactivo, esperando acción del sistema o usuario.
    • Interrumpible: Puede ser modificado por señales.
    • Ininterrumpible: Espera hardware; no modificable por señales.
  • Detenido: Finalizado, pero sigue en la tabla del kernel.
  • Zombie: Proceso muerto que no consume recursos pero está en la tabla de procesos.

3. Identificación y Monitoreo de Procesos

  • PID (Process ID): Identifica procesos.
  • PPID (Parent Process ID): Identifica el proceso padre.
  • Herramientas para monitorear:
    • top: Vista en tiempo real de procesos.
    • ps: Listado estático de procesos.
    • pstree: Árbol jerárquico de procesos.

4. Eliminación de Procesos

  • Comandos comunes:
    • kill <PID>: Finaliza un proceso por su ID.
    • killall <nombre>: Termina todos los procesos con un nombre específico.
    • pkill <nombre>: Mata procesos que coincidan parcialmente con un nombre.
    • xkill: Finaliza procesos seleccionando una ventana.
  • Señales:
    • SIGTERM (15): Termina procesos limpiamente.
    • SIGKILL (9): Fuerza la terminación.

5. Gestión de Prioridad

  • nice: Establece prioridad al iniciar un proceso.
  • renice: Cambia la prioridad de un proceso ya existente.
  • Rango de prioridades: -20 (máxima) a 19 (mínima).

6. Manejo de Procesos en Segundo Plano

  • &: Envía procesos al fondo.
  • jobs: Lista procesos en segundo plano.
  • bg: Reanuda procesos en segundo plano.
  • fg: Trae procesos al primer plano.

7. Persistencia de Procesos

  • nohup: Mantiene procesos activos después de cerrar la terminal.
    • Redirige salida estándar a nohup.out o un archivo especificado.

8. Administración de Servicios con systemctl

  • Iniciar/Detener/Reiniciar servicios:
    • systemctl start <servicio>
    • systemctl stop <servicio>
    • systemctl restart <servicio>
  • Habilitar al arranque:
    systemctl enable <servicio>
  • Verificar estado:
    systemctl status <servicio>

9. Ejercicio práctico: Configurar MariaDB

  1. Instalar MariaDB:
    sudo apt install mariadb-server
  2. Habilitar servicio al arranque:
    sudo systemctl enable mariadb
  3. Iniciar servicio:
    sudo systemctl start mariadb
  4. Verificar estado:
    sudo systemctl status mariadb
  5. Abrir puerto en el firewall:
    • Agregar puerto:
      firewall-cmd --zone=public --add-port=3306/tcp --permanent
    • Recargar firewall:
      firewall-cmd --reload

Conclusión

Este artículo proporciona una base sólida para administrar procesos en Linux, desde identificar y monitorear procesos hasta gestionarlos en segundo plano, ajustar prioridades, y garantizar la persistencia con nohup. También cubre herramientas como systemctl y firewall-cmd para manejar servicios y conexiones. Una buena comprensión de estos conceptos es esencial para la administración efectiva de sistemas Linux.

Pon en práctica lo aprendido

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

Preguntas Basadas en el Artículo:

  1. ¿Qué es un proceso en Linux y cuáles son sus tipos principales?
  2. ¿Qué son los Daemons y qué función cumplen en un sistema Linux?
  3. Describe los estados posibles de un proceso en Linux.
  4. ¿Qué son PID y PPID, y cómo se relacionan entre sí?
  5. ¿Cómo se utiliza el comando top para monitorear procesos?
  6. ¿Qué diferencias existen entre los comandos ps, top, y htop?
  7. ¿Cómo puedes eliminar un proceso utilizando el comando kill?
  8. ¿Cuál es la función de los comandos nice y renice en Linux?
  9. ¿Qué ventaja ofrece el comando nohup al ejecutar procesos en Linux?
  10. ¿Cómo puedes habilitar y administrar servicios utilizando el comando systemctl?

Ejercicios Basados en el Contenido del Artículo:

  1. Ejecuta el comando top y describe qué información se muestra en las columnas PID, %CPU y %MEM.
  2. Lista todos los procesos ejecutados por un usuario específico utilizando el comando ps.
  3. Utiliza kill para terminar un proceso que se esté ejecutando, indicando los pasos necesarios para identificar el PID.
  4. Cambia la prioridad de un proceso utilizando nice o renice y describe los cambios observados.
  5. Inicia un proceso en segundo plano usando nohup y verifica que siga ejecutándose después de cerrar la terminal.
  6. Filtra los procesos relacionados con un nombre específico utilizando el comando pgrep.
  7. Utiliza systemctl para habilitar un servicio, comprobar su estado y deshabilitarlo nuevamente.
  8. Usa firewall-cmd para abrir el puerto 80 en el firewall y verificar los cambios realizados.
  9. Crea un script que ejecute un proceso simple en segundo plano y lo mantenga utilizando nohup.
  10. Utiliza el comando df para listar el uso del espacio en disco y el comando free para observar el uso de la memoria.

Respuestas a las Preguntas:

  1. Un proceso es una instancia de un programa en ejecución. Los tipos principales son:
    • Primer plano: Interactivos y controlados por el usuario en una terminal.
    • Segundo plano: No interactivos, no requieren la intervención directa del usuario.
  2. Daemons son procesos en segundo plano que arrancan al inicio del sistema, permanecen en ejecución y ofrecen servicios como impresión, redes o administración de bases de datos.
  3. Estados de un proceso en Linux:
    • Ejecución: Activo o listo para ejecutarse.
    • Espera: Suspendido hasta que un recurso esté disponible.
    • Detenido: Finalizado por una señal externa.
    • Zombie: Proceso terminado, pero aún presente en la tabla de procesos.
  4. PID (Process ID) identifica de forma única a cada proceso. PPID (Parent Process ID) representa el ID del proceso que inició al actual.
  5. El comando top muestra información en tiempo real de los procesos, como uso de CPU, memoria y detalles del sistema. Salir con q.
  6. Diferencias:
    • top: Información en tiempo real.
    • ps: Muestra una instantánea de los procesos.
    • htop: Versión visual e interactiva de top.
  7. Para eliminar un proceso:
    • Identifica el PID con ps o top.
    • Ejecuta kill <PID> para terminarlo.
  8. nice y renice ajustan la prioridad de un proceso. nice define la prioridad al iniciar el proceso, mientras que renice ajusta la prioridad de un proceso en ejecución.
  9. nohup mantiene los procesos activos incluso si la sesión termina. Es útil para procesos de larga duración.
  10. systemctl permite gestionar servicios:
    • start: Iniciar servicio.
    • stop: Detener servicio.
    • enable: Configurar para arrancar automáticamente.
    • status: Verificar estado del servicio.

Respuestas a los Ejercicios:

  1. Salida del comando top:
    • PID: ID del proceso.
    • %CPU: Porcentaje de uso del CPU.
    • %MEM: Porcentaje de uso de memoria.
  2. Comando: ps -u <usuario>. Muestra procesos del usuario especificado.
  3. Pasos para usar kill:
    • Encuentra el PID con ps o top.
    • Ejecuta kill <PID> o kill -9 <PID> para forzar la terminación.
  4. Cambiar prioridad:
    • Inicia con: nice -n -5 <proceso>.
    • Ajusta con: renice -10 -p <PID>.
  5. Comando: nohup <proceso> &. Verifica con ps o pgrep.
  6. Filtrar procesos: pgrep <nombre> muestra los PIDs coincidentes.
  7. Habilitar y administrar servicios:
    • sudo systemctl enable <servicio>.
    • sudo systemctl status <servicio>.
    • sudo systemctl disable <servicio>.
  8. Abrir puerto 80:
    • sudo firewall-cmd --zone=public --add-port=80/tcp --permanent.
    • Reinicia: sudo firewall-cmd --reload.
  9. Script ejemplo:bashCopiar código#!/bin/bash nohup sleep 100 & echo "Proceso iniciado en segundo plano."
  10. Comando df y free:
    • df -h: Muestra espacio en disco en formato legible.
    • free -m: Muestra uso de memoria en MB.

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