Introducción
Un comando de seguridad puede seguir ejecutándose después de que su trabajo útil se haya bloqueado. Antes de detener nada, necesitas identificar el proceso adecuado y comprender qué otra actividad debe permanecer disponible.
Esta práctica proporciona procesos de entrenamiento inofensivos y un registro de aplicación. Inspeccionarás identidades de procesos, gestionarás un trabajo de terminal, detendrás un proceso seleccionado y extraerás su diagnóstico sin tocar servicios de la plataforma.
Inspecciona procesos y gestiona un trabajo de terminal
En este paso inspeccionarás procesos en ejecución y compararás el trabajo de terminal en primer y segundo plano.
Entra en Kali y elige el espacio de trabajo compartido:
kali
cd /home/labex/project
Un proceso es un programa en ejecución con un identificador de proceso (PID) y un propietario. ps muestra una instantánea. La opción -e selecciona todos los procesos y -o selecciona los campos que se mostrarán:
ps -eo pid,user,args
Busca los procesos Python de práctica preparados y su propietario kali. Ignora los procesos ajenos de la plataforma y el contenedor.
top normalmente se actualiza continuamente. -b selecciona una vista por lotes imprimible, mientras que -n 1 la limita a una actualización:
top -b -n 1
Esto muestra una instantánea de recursos en lugar de dejarte dentro de una pantalla interactiva. Los PID y los valores de recursos varían.
Un comando en primer plano ocupa la terminal hasta que termina. sleep espera un número de segundos sin producir salida. Inicia una espera deliberadamente larga:
sleep 30
Pulsa Ctrl+C para interrumpir este comando en primer plano y volver al indicador. Ctrl+C es útil para detener el comando que ocupa actualmente tu terminal.
El & final inicia un comando en segundo plano, permitiendo que el shell acepte inmediatamente más comandos. Inicia un temporizador desechable:
sleep 300 &
El shell muestra un número de trabajo como [1] y un PID. jobs -l enumera los trabajos en segundo plano que pertenecen a este shell e incluye sus PID:
jobs -l
Deberías ver el trabajo sleep 300 ejecutándose. Déjalo activo para la comprobación de este paso. Mantén abierta la misma terminal para el siguiente paso; los números de trabajo pertenecen a esta sesión del shell.
Detén solo el proceso bloqueado y lee su registro
En este paso detendrás un proceso de práctica seleccionado, conservarás otro y guardarás las líneas de error relevantes.
En el mismo shell Kali, detén el temporizador desechable en segundo plano. kill envía una señal; su señal predeterminada de terminación solicita que un proceso finalice. La referencia de trabajo %1 designa el primer trabajo creado en este shell nuevo:
kill %1
El shell puede mostrar un aviso de terminación. Para un proceso que no se inició como uno de tus trabajos del shell, identifica primero su PID. pgrep -a muestra el PID y la línea de comandos completa de las coincidencias; -f compara con toda la línea de comandos:
pgrep -af stalled-worker.py
El comando relevante es python3 /opt/labex/stalled-worker.py. Es un proceso de entrenamiento inofensivo que espera indefinidamente. El proceso independiente training-heartbeat.py debe seguir ejecutándose.
Puedes pasar a kill un PID descubierto mediante sustitución de comandos. $(...) ejecuta el comando interior y sustituye su salida; las comillas dobles mantienen esa salida como un argumento. Las anclas ^ y $ coinciden con el comando completo esperado en lugar de un nombre parcial más amplio. Detén solo ese proceso exacto:
kill "$(pgrep -f '^python3 /opt/labex/stalled-worker.py$')"
Hazlo una vez; repetirlo después de que el proceso haya terminado no encontrará ningún PID. El comando debe volver sin salida. Confirma que el proceso que debes conservar sigue presente:
pgrep -af training-heartbeat.py
Su PID puede variar, pero su ruta de comando debe seguir apareciendo.
Un registro de aplicación almacena eventos en texto. El registro de práctica proporcionado es worker.log; el ejercicio no requiere systemd ni acceso a registros del kernel. Lee el registro:
cat /home/labex/project/worker.log
El registro mezcla mensajes informativos con una línea ERROR que describe la operación bloqueada. Utiliza el filtrado y la redirección ya presentados para guardar solo los registros de error:
grep '^ERROR ' /home/labex/project/worker.log > /home/labex/project/worker-errors.txt
cat /home/labex/project/worker-errors.txt
Salida esperada:
ERROR training request exceeded its time limit
Detuviste un proceso seleccionado, conservaste otro ajeno y mantuviste su diagnóstico separado del registro completo.
Resumen
Inspeccionaste identificadores de procesos, propietarios y líneas de comandos; observaste la interrupción en primer plano y los trabajos en segundo plano; enviaste una señal de terminación selectiva y filtraste un registro de aplicación. Conservaste un proceso ajeno mientras detenías el proceso bloqueado seleccionado.



