Gerenciando processos e logs no Kali

LinuxBeginner
Pratique Agora

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.