Bienvenidos a esta Guía Rápida de Linux para Hackers #15 Gestión de Procesos y Servicios. 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?
Lista de aprendizajes del artículo sobre procesos en Linux
- Definición de proceso:
- Comprender qué es un proceso y sus tipos (en primer plano, segundo plano y daemons).
- Estados de los procesos:
- Identificar los estados: ejecución, espera, detenido y zombie.
- Identificación de procesos:
- Uso de PID y PPID para rastrear procesos y entender relaciones entre ellos.
- Monitoreo de procesos:
- Herramientas como
top
,htop
, yps
para observar y gestionar procesos en tiempo real.
- Herramientas como
- Eliminación de procesos:
- Uso de comandos
kill
,killall
,pkill
yxkill
para terminar procesos específicos.
- Uso de comandos
- Gestión de prioridad:
- Ajustar prioridad de procesos con
nice
yrenice
.
- Ajustar prioridad de procesos con
- Manejo de procesos en segundo plano:
- Uso de
&
,jobs
,fg
, ybg
para administrar procesos en segundo plano.
- Uso de
- Persistencia de procesos:
- Ejecutar procesos de larga duración con
nohup
para evitar interrupciones.
- Ejecutar procesos de larga duración con
- Comandos específicos para servicios:
- Uso de
systemctl
para iniciar, detener y gestionar servicios.
- Uso de
¿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:
Campo | Descripción | Ejemplo 1 | Ejemplo 2 |
Identificador PID | El ID del proceso de cada tarea | 1525 | 961 |
Usuario | El nombre de usuario del propietario de la tarea | Hogar | Raíz |
PR | Prioridad Puede ser 20 (más alto) o -20 (más bajo) | 20 | 20 |
NI | El bonito valor de una tarea | 0 | 0 |
VIRT | Memoria virtual utilizada (kb) | 1775 | 75972 |
RES | Memoria física utilizada (kb) | 100 | 51 |
SHR | Memoria compartida utilizada (kb) | 28 | 7952 |
S | Estado Hay cinco tipos: ‘D’ = sueño ininterrumpido ‘R’ = corriendo ‘S’ = durmiendo ‘T’ = trazado o detenido ‘Z’ = zombi | S | R |
%CPU | % de tiempo de CPU | 1.7 | 1.0 |
%MEM | Memoria física utilizada | 10 | 5.1 |
TIME+ | Tiempo total de CPU | 5:05.34 | 2:23.42 |
Proceso | Nombre del comando | Photoshop.exe | Xorg |
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 -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 quepgrep
permite expresiones regulares y opciones avanzadas de filtrado.pgrep
permite especificar el usuario del proceso, grupos de procesos y patrones en los nombres, mientras quepidof
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
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
- Iniciar un servicio: Para iniciar un servicio específico, usa el siguiente comando. Por ejemplo, para iniciar
nginx
:sudo systemctl start nginx
- Detener un servicio: Esto detendrá el servicio de inmediato. Siguiendo con el ejemplo de
nginx
:sudo systemctl stop nginx
- Reiniciar un servicio: Útil cuando necesitas reiniciar un servicio después de cambios en su configuración:
sudo systemctl restart nginx
- 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
- Habilitar un servicio para que inicie al arranque: Este comando asegura que el servicio esté activo cada vez que el sistema arranque:
- s
udo systemctl enable nginx
- s
- Deshabilitar un servicio para que no inicie al arranque: Esto detiene el servicio de iniciar automáticamente al arrancar:
sudo systemctl disable nginx
- 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
- 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
- Comprobar el estado de un servicio: Esto muestra información detallada sobre el estado del servicio, incluyendo errores recientes y registros:
systemctl status nginx
- 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
- Ver dependencias de un servicio: Para conocer las dependencias de un servicio y cómo se relaciona con otros procesos:
systemctl list-dependencies nginx
- Monitorear servicios fallidos: Esto muestra todos los servicios que han fallado desde el último arranque:
systemctl --failed
3. Gestión de Unidades de systemd
- Recargar
systemd
para aplicar cambios: Después de editar o crear archivos de unidad, recargasystemd
para aplicar los cambios:sudo systemctl daemon-reload
- 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
- Reiniciar el sistema: Para reiniciar el sistema operativo completo con
systemd
:sudo systemctl reboot
- Apagar el sistema: Este comando apaga el sistema usando
systemd
:sudo systemctl poweroff
- Cambiar a un “target” específico: Los “targets” en
systemd
son como los “runlevels” en sistemas SysV, definiendo estados específicos del sistema (comographical.target
omulti-user.target
). Para cambiar al modo multiusuario (sin interfaz gráfica):sudo systemctl isolate multi-user.target
- 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
- Ver logs del sistema en tiempo real:
journalctl
es la herramienta desystemd
para acceder a los registros de logs. Para ver los logs en tiempo real, usa:journalctl -f
- 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
- 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
Comando | Descripció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-reload | Recargar la configuración de systemd . |
systemctl list-units | Listar 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.
Resumen de los puntos clave:
- Administración de servicios con
systemd
ysystemctl
El procesosystemd
(PID 1) administra los servicios que inician automáticamente con el sistema operativo.systemctl
permite controlar estos servicios:systemctl start <servicio>
: inicia un servicio.systemctl stop <servicio>
: detiene un servicio.systemctl status <servicio>
: verifica si el servicio está activo o detenido.systemctl enable <servicio>
: configura el servicio para que arranque automáticamente al iniciar el sistema.systemctl disable <servicio>
: deshabilita el inicio automático del servicio.
- Listado de servicios
Para ver una lista de todos los servicios del sistema, utilizasystemctl
. La salida puede ser larga, por lo que puedes filtrar los resultados congrep
(por ejemplo,systemctl | grep apache
). - Acceso y configuración de Apache
Una vez que se inicie el servicio Apache, accede a él a través de la IP de la instancia de Linux en un navegador. Si Apache no se carga, es posible que sea necesario abrir el puerto 80 con:- código
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
Esto permite que el firewall acepte conexiones en el puerto 80 y se mantiene activo tras reiniciar.
- código
- Ejercicio con MariaDB
- Instalar MariaDB: con
sudo apt install mariadb-server
. - Habilitar MariaDB: usa
systemctl enable mariadb
para configurarlo como un servicio que arranque automáticamente. - Iniciar MariaDB: ejecuta
systemctl start mariadb
. - Verificar estado: utiliza
systemctl status mariadb
ops aux | grep mariadb
para comprobar si está activo. - Abrir puerto para MariaDB: el puerto predeterminado de MariaDB es el 3306. Para permitir conexiones remotas, abre este puerto con:
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
- Instalar MariaDB: con
Con estos pasos, puedes administrar servicios de sistema y configurar el firewall para aceptar conexiones de servicios específicos en Linux.
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.
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.
- Redirige salida estándar a
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>
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:
- ¿Qué es un proceso en Linux y cuáles son sus tipos principales?
- ¿Qué son los Daemons y qué función cumplen en un sistema Linux?
- Describe los estados posibles de un proceso en Linux.
- ¿Qué son PID y PPID, y cómo se relacionan entre sí?
- ¿Cómo se utiliza el comando
top
para monitorear procesos? - ¿Qué diferencias existen entre los comandos
ps
,top
, yhtop
? - ¿Cómo puedes eliminar un proceso utilizando el comando
kill
? - ¿Cuál es la función de los comandos
nice
yrenice
en Linux? - ¿Qué ventaja ofrece el comando
nohup
al ejecutar procesos en Linux? - ¿Cómo puedes habilitar y administrar servicios utilizando el comando
systemctl
?
Ejercicios Basados en el Contenido del Artículo:
- Ejecuta el comando
top
y describe qué información se muestra en las columnas PID, %CPU y %MEM. - Lista todos los procesos ejecutados por un usuario específico utilizando el comando
ps
. - Utiliza
kill
para terminar un proceso que se esté ejecutando, indicando los pasos necesarios para identificar el PID. - Cambia la prioridad de un proceso utilizando
nice
orenice
y describe los cambios observados. - Inicia un proceso en segundo plano usando
nohup
y verifica que siga ejecutándose después de cerrar la terminal. - Filtra los procesos relacionados con un nombre específico utilizando el comando
pgrep
. - Utiliza
systemctl
para habilitar un servicio, comprobar su estado y deshabilitarlo nuevamente. - Usa
firewall-cmd
para abrir el puerto 80 en el firewall y verificar los cambios realizados. - Crea un script que ejecute un proceso simple en segundo plano y lo mantenga utilizando
nohup
. - Utiliza el comando
df
para listar el uso del espacio en disco y el comandofree
para observar el uso de la memoria.
Respuestas a las Preguntas:
- 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.
- 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.
- 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.
- PID (Process ID) identifica de forma única a cada proceso. PPID (Parent Process ID) representa el ID del proceso que inició al actual.
- El comando
top
muestra información en tiempo real de los procesos, como uso de CPU, memoria y detalles del sistema. Salir conq
. - Diferencias:
top
: Información en tiempo real.ps
: Muestra una instantánea de los procesos.htop
: Versión visual e interactiva detop
.
- Para eliminar un proceso:
- Identifica el PID con
ps
otop
. - Ejecuta
kill <PID>
para terminarlo.
- Identifica el PID con
nice
yrenice
ajustan la prioridad de un proceso.nice
define la prioridad al iniciar el proceso, mientras querenice
ajusta la prioridad de un proceso en ejecución.nohup
mantiene los procesos activos incluso si la sesión termina. Es útil para procesos de larga duración.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:
- Salida del comando
top
:- PID: ID del proceso.
- %CPU: Porcentaje de uso del CPU.
- %MEM: Porcentaje de uso de memoria.
- Comando:
ps -u <usuario>
. Muestra procesos del usuario especificado. - Pasos para usar
kill
:- Encuentra el PID con
ps
otop
. - Ejecuta
kill <PID>
okill -9 <PID>
para forzar la terminación.
- Encuentra el PID con
- Cambiar prioridad:
- Inicia con:
nice -n -5 <proceso>
. - Ajusta con:
renice -10 -p <PID>
.
- Inicia con:
- Comando:
nohup <proceso> &
. Verifica conps
opgrep
. - Filtrar procesos:
pgrep <nombre>
muestra los PIDs coincidentes. - Habilitar y administrar servicios:
sudo systemctl enable <servicio>
.sudo systemctl status <servicio>
.sudo systemctl disable <servicio>
.
- Abrir puerto 80:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
.- Reinicia:
sudo firewall-cmd --reload
.
- Script ejemplo:bashCopiar código
#!/bin/bash nohup sleep 100 & echo "Proceso iniciado en segundo plano."
- Comando
df
yfree
: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…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿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
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
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!!!