Kali에서 프로세스와 로그 관리하기

LinuxBeginner
지금 연습하기

소개

보안 명령어는 유용한 작업이 멈춘 뒤에도 계속 실행될 수 있습니다. 무엇이든 중지하기 전에 올바른 프로세스를 식별하고 어떤 다른 활동이 유지되어야 하는지 이해해야 합니다.

이 실습은 무해한 연습 워커와 애플리케이션 로그를 제공합니다. 플랫폼 서비스를 건드리지 않고 프로세스 신원을 살펴보고 터미널 작업을 관리하고 선택한 워커 하나를 중지한 뒤 진단 메시지를 추출합니다.

프로세스를 살펴보고 터미널 작업 관리하기

이 단계에서는 실행 중인 프로세스를 살펴보고 전경 및 백그라운드 터미널 작업을 비교합니다.

Kali에 들어가 공유 작업 공간을 선택하세요.

kali
cd /home/labex/project

프로세스는 프로세스 ID(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

선택한 워커를 중지하고 관련 없는 워커를 유지했으며 전체 로그와 별도로 진단 메시지를 보관했습니다.

요약

프로세스 ID, 소유자, 명령줄을 살펴보고 전경 작업 중단과 백그라운드 작업을 관찰했으며 특정 대상에 종료 신호를 보내고 애플리케이션 로그를 필터링했습니다. 선택한 정체 프로세스를 중지하면서 관련 없는 워커를 유지했습니다.