Introdução
Um comando de segurança pode continuar em execução depois que seu trabalho útil parou de avançar. Antes de interromper qualquer coisa, você precisa identificar o processo certo e entender quais outras atividades devem permanecer disponíveis.
Este laboratório fornece processos de prática inofensivos e um log de aplicação. Você inspecionará identidades de processos, gerenciará uma tarefa do terminal, interromperá um processo selecionado e extrairá seu diagnóstico sem tocar nos serviços da plataforma.
Inspecione processos e gerencie uma tarefa do terminal
Nesta etapa, você inspecionará processos em execução e comparará o trabalho em primeiro e segundo plano no terminal.
Entre no Kali e escolha o espaço de trabalho compartilhado:
kali
cd /home/labex/project
Um processo é um programa em execução com um identificador de processo (PID) e um proprietário. ps exibe um retrato do momento. A opção -e seleciona todos os processos e -o seleciona os campos a exibir:
ps -eo pid,user,args
Procure os processos Python de prática preparados e seu proprietário kali. Ignore os processos não relacionados da plataforma e do contêiner.
top normalmente atualiza continuamente. -b seleciona uma visualização em lote imprimível, enquanto -n 1 a limita a uma atualização:
top -b -n 1
Isso mostra um retrato dos recursos em vez de deixar você em uma tela interativa. PIDs e valores de recursos variam.
Um comando em primeiro plano ocupa o terminal até terminar. sleep espera um número de segundos sem produzir saída. Inicie uma espera deliberadamente longa:
sleep 30
Pressione Ctrl+C para interromper esse comando em primeiro plano e retornar ao prompt. Ctrl+C é útil quando você precisa interromper o comando que ocupa seu terminal no momento.
O & final inicia um comando em segundo plano, permitindo que o shell aceite mais comandos imediatamente. Inicie um temporizador descartável:
sleep 300 &
O shell exibe um número de tarefa como [1] e um PID. jobs -l lista as tarefas em segundo plano pertencentes a este shell e inclui seus PIDs:
jobs -l
Você deve ver a tarefa sleep 300 em execução. Deixe-a ativa para a verificação desta etapa. Mantenha o mesmo terminal aberto para a próxima etapa; os números de tarefa pertencem a esta sessão de shell.
Interrompa somente o processo travado e leia seu log
Nesta etapa, você interromperá um processo de prática selecionado, preservará outro e salvará as linhas de erro relevantes.
No mesmo shell Kali, interrompa o temporizador descartável em segundo plano. kill envia um sinal; seu sinal padrão de término solicita que um processo saia. A referência de tarefa %1 se refere à primeira tarefa criada neste shell novo:
kill %1
O shell pode exibir um aviso de término. Para um processo que não foi iniciado como uma de suas tarefas do shell, identifique primeiro seu PID. pgrep -a exibe o PID e a linha de comando completa das correspondências; -f faz a correspondência com a linha de comando completa:
pgrep -af stalled-worker.py
O comando relevante é python3 /opt/labex/stalled-worker.py. Este é um processo de treinamento inofensivo que espera indefinidamente. O processo separado training-heartbeat.py deve permanecer em execução.
Você pode passar um PID descoberto para kill com substituição de comando. $(...) executa o comando interno e substitui a expressão por sua saída; as aspas duplas mantêm essa saída como um argumento. As âncoras ^ e $ correspondem ao comando esperado completo em vez de um nome parcial mais abrangente. Interrompa apenas esse processo exato:
kill "$(pgrep -f '^python3 /opt/labex/stalled-worker.py$')"
Faça isso uma vez; repetir depois que o processo sair não encontrará nenhum PID. O comando deve retornar sem saída. Confirme que o processo a preservar ainda está presente:
pgrep -af training-heartbeat.py
Seu PID pode variar, mas seu caminho de comando ainda deve ser listado.
Um log de aplicação registra eventos em texto. O log de prática fornecido é worker.log; o exercício não exige systemd nem acesso aos logs do kernel. Leia o log:
cat /home/labex/project/worker.log
O log mistura mensagens informativas com uma linha ERROR que descreve a operação travada. Use a filtragem e o redirecionamento já apresentados para salvar apenas registros de erro:
grep '^ERROR ' /home/labex/project/worker.log > /home/labex/project/worker-errors.txt
cat /home/labex/project/worker-errors.txt
Saída esperada:
ERROR training request exceeded its time limit
Você interrompeu um processo selecionado, preservou outro não relacionado e manteve seu diagnóstico separado do log completo.
Resumo
Você inspecionou IDs, proprietários e linhas de comando de processos; observou a interrupção em primeiro plano e tarefas em segundo plano; enviou um sinal de término direcionado; e filtrou um log de aplicação. Preservou um processo não relacionado enquanto interrompia o processo travado selecionado.



