Gérer les processus et les journaux dans Kali

LinuxBeginner
Pratiquer maintenant

Introduction

Une commande de sécurité peut continuer à s'exécuter alors que son travail utile est bloqué. Avant d'arrêter quoi que ce soit, vous devez identifier le bon processus et comprendre quelles autres activités doivent rester disponibles.

Ce lab fournit des processus d'exercice inoffensifs et un journal d'application. Vous examinerez les identités des processus, gérerez une tâche du terminal, arrêterez un processus choisi et extrairez son diagnostic sans toucher aux services de la plateforme.

Examiner les processus et gérer une tâche du terminal

Dans cette étape, vous examinerez les processus en cours d'exécution et comparerez les tâches du terminal au premier plan et en arrière-plan.

Entrez dans Kali et choisissez l'espace de travail partagé :

kali
cd /home/labex/project

Un processus est un programme en cours d'exécution doté d'un identifiant de processus (PID) et d'un propriétaire. ps affiche un instantané. L'option -e sélectionne tous les processus et -o sélectionne les champs à afficher :

ps -eo pid,user,args

Repérez les processus Python d'exercice préparés et leur propriétaire kali. Ignorez les processus de la plateforme et du conteneur sans rapport avec l'exercice.

top s'actualise normalement en continu. -b sélectionne une vue imprimable par lots, tandis que -n 1 la limite à une seule actualisation :

top -b -n 1

Cela affiche un instantané des ressources au lieu de vous laisser dans un affichage interactif. Les PID et les valeurs des ressources varient.

Une commande au premier plan occupe le terminal jusqu'à sa fin. sleep attend un nombre de secondes sans produire de sortie. Lancez une attente volontairement longue :

sleep 30

Appuyez sur Ctrl+C pour interrompre cette commande au premier plan et retrouver l'invite. Ctrl+C est utile pour arrêter la commande qui occupe actuellement votre terminal.

Le & final lance une commande en arrière-plan, ce qui permet au shell d'accepter immédiatement d'autres commandes. Lancez une temporisation jetable :

sleep 300 &

Le shell affiche un numéro de tâche tel que [1] et un PID. jobs -l répertorie les tâches en arrière-plan appartenant à ce shell et inclut leurs PID :

jobs -l

Vous devriez voir la tâche sleep 300 en cours d'exécution. Laissez-la active pour le contrôle de cette étape. Gardez le même terminal ouvert pour l'étape suivante ; les numéros de tâche appartiennent à cette session du shell.

Arrêter uniquement le processus bloqué et lire son journal

Dans cette étape, vous arrêterez un processus d'exercice choisi, en préserverez un autre et enregistrerez les lignes d'erreur pertinentes.

Dans le même shell Kali, arrêtez la temporisation jetable en arrière-plan. kill envoie un signal ; son signal de terminaison par défaut demande à un processus de se terminer. La référence de tâche %1 désigne la première tâche créée dans ce shell neuf :

kill %1

Le shell peut afficher une notification de terminaison. Pour un processus qui n'a pas été lancé comme tâche de votre shell, identifiez d'abord son PID. pgrep -a affiche le PID et la ligne de commande complète des correspondances ; -f effectue la recherche sur la ligne de commande complète :

pgrep -af stalled-worker.py

La commande pertinente est python3 /opt/labex/stalled-worker.py. C'est un processus d'entraînement inoffensif qui attend indéfiniment. Le processus distinct training-heartbeat.py doit rester en cours d'exécution.

Vous pouvez transmettre un PID découvert à kill avec la substitution de commande. $(...) exécute la commande interne et substitue sa sortie ; les guillemets doubles conservent cette sortie comme un seul argument. Les ancres ^ et $ correspondent à toute la commande attendue plutôt qu'à un nom partiel plus large. Arrêtez uniquement ce processus exact :

kill "$(pgrep -f '^python3 /opt/labex/stalled-worker.py$')"

Faites-le une seule fois ; répéter la commande après la fin du processus ne trouvera aucun PID. La commande doit se terminer sans sortie. Confirmez que le processus à préserver est toujours présent :

pgrep -af training-heartbeat.py

Son PID peut varier, mais le chemin de sa commande doit toujours être répertorié.

Un journal d'application consigne les événements sous forme de texte. Le journal d'exercice fourni est worker.log ; l'exercice n'exige ni systemd ni accès aux journaux du noyau. Lisez le journal :

cat /home/labex/project/worker.log

Le journal mélange des messages d'information et une ligne ERROR décrivant l'opération bloquée. Utilisez le filtrage et la redirection déjà présentés pour enregistrer uniquement les enregistrements d'erreur :

grep '^ERROR ' /home/labex/project/worker.log > /home/labex/project/worker-errors.txt
cat /home/labex/project/worker-errors.txt

Résultat attendu :

ERROR training request exceeded its time limit

Vous avez arrêté un processus choisi, préservé un processus sans rapport et conservé son diagnostic séparément du journal complet.

Résumé

Vous avez examiné les identifiants, propriétaires et lignes de commande des processus, observé l'interruption au premier plan et les tâches en arrière-plan, envoyé un signal de terminaison ciblé et filtré un journal d'application. Vous avez préservé un processus sans rapport tout en arrêtant le processus bloqué choisi.