Управление процессами и журналами в Kali

LinuxBeginner
Практиковаться сейчас

Введение

Команда безопасности может продолжать работать, хотя полезная работа уже остановилась. Перед остановкой чего-либо нужно определить нужный процесс и понять, какая другая активность должна остаться доступной.

Эта работа предоставляет безвредные учебные процессы и журнал приложения. Вы изучите сведения о процессах, поработаете с заданием терминала, остановите один выбранный процесс и извлечёте диагностику, не затрагивая службы платформы.

Изучите процессы и управляйте заданием терминала

На этом шаге вы изучите работающие процессы и сравните работу на переднем плане и в фоне терминала.

Войдите в Kali и выберите общую рабочую папку:

kali
cd /home/labex/project

Процесс — работающая программа с идентификатором процесса (PID) и владельцем. ps выводит снимок состояния. Параметр -e выбирает все процессы, а -o — показываемые поля:

ps -eo pid,user,args

Найдите подготовленные учебные процессы Python и их владельца kali. Не затрагивайте посторонние процессы платформы и контейнера.

top обычно обновляется непрерывно. -b выбирает печатаемый пакетный вид, а -n 1 ограничивает его одним обновлением:

top -b -n 1

Это показывает снимок ресурсов вместо перехода в интерактивный экран. PID и значения ресурсов различаются.

Команда переднего плана занимает терминал до завершения. sleep ждёт указанное число секунд без вывода. Начните намеренно долгое ожидание:

sleep 30

Нажмите Ctrl+C, чтобы прервать эту команду переднего плана и вернуть приглашение. Ctrl+C полезно, когда нужно остановить команду, сейчас занимающую терминал.

Завершающий & запускает команду в фоне, позволяя оболочке сразу принимать другие команды. Запустите один временный таймер:

sleep 300 &

Оболочка выводит номер задания, например [1], и PID. jobs -l перечисляет фоновые задания этой оболочки вместе с PID:

jobs -l

Вы должны увидеть работающее задание sleep 300. Оставьте его работающим для проверки этого шага. Сохраните тот же терминал открытым для следующего шага; номера заданий принадлежат этому сеансу оболочки.

Остановите только зависший процесс и прочитайте журнал

На этом шаге вы остановите выбранный учебный процесс, сохраните другой и запишете нужные строки ошибок.

В той же оболочке Kali остановите временный фоновый таймер. kill отправляет сигнал; сигнал завершения по умолчанию просит процесс выйти. Ссылка на задание %1 адресует первое задание, созданное в этой новой оболочке:

kill %1

Оболочка может вывести уведомление о завершении. Для процесса, запущенного вне заданий вашей оболочки, сначала определите PID. pgrep -a выводит PID и полную командную строку совпадений; -f ищет по полной командной строке:

pgrep -af stalled-worker.py

Нужная команда — python3 /opt/labex/stalled-worker.py. Это безвредный учебный процесс, ожидающий бесконечно. Отдельный процесс training-heartbeat.py должен продолжать работать.

Можно передать найденный PID в kill с помощью подстановки команды. $(...) выполняет внутреннюю команду и подставляет её вывод; двойные кавычки сохраняют вывод одним аргументом. Якоря ^ и $ сопоставляют полную ожидаемую команду вместо более широкого частичного имени. Остановите только этот точный процесс:

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

Выполните это один раз; после выхода процесса повторный запуск не найдёт PID. Команда должна вернуться без вывода. Подтвердите, что сохраняемый процесс всё ещё присутствует:

pgrep -af training-heartbeat.py

Его PID может отличаться, но путь команды должен остаться в списке.

Журнал приложения записывает события текстом. Предоставленный учебный журнал — worker.log; упражнение не требует доступа к systemd или журналам ядра. Прочитайте журнал:

cat /home/labex/project/worker.log

Журнал смешивает информационные сообщения со строкой ERROR, описывающей зависшую операцию. Используйте уже изученные фильтрацию и перенаправление, чтобы сохранить только записи ошибок:

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

Ожидаемый вывод:

ERROR training request exceeded its time limit

Вы остановили выбранный процесс, сохранили посторонний процесс и отделили диагностику от полного журнала.

Резюме

Вы изучили идентификаторы процессов, владельцев и командные строки, наблюдали прерывание переднего плана и фоновые задания, отправили адресный сигнал завершения и отфильтровали журнал приложения. Вы сохранили посторонний процесс, остановив выбранный зависший процесс.