학습 가이드
#20주 실습 커리큘럼

프로세스 종료: kill·pkill·pgrep 제대로 쓰기

_리눅스 실습 커리큘럼 18/40 · 프로세스와 예약 작업 (9주차)_

앞 편에서 프로세스를 보고 우선순위를 조정했습니다. 이번에는 끝냅니다. 방법은 kill PID 하나가 아니고, 무엇보다 정상 종료 요청(TERM)을 먼저 보내고 강제 종료(KILL)는 마지막에 쓰는 순서가 있습니다.

kill·pkill 프로세스 종료, 왜 필요한가

  • TERM 은 프로세스가 정리하고 끝날 기회를 주고, KILL 은 즉시 끝냅니다. 순서를 지켜야 데이터가 깨지지 않습니다.
  • 이름으로, 사용자로, 실행 시간으로 대상을 고르는 도구가 각각 다릅니다.
  • LPIC-1·리눅스마스터 모두 시그널과 종료 명령을 다룹니다.

이번 편에서 익힐 것

  1. 시그널 — TERM(15), KILL(9), 존재 확인 kill -0
  2. 이름으로 찾기·끝내기 — pgrep, pkill, -f
  3. 사용자 기준 — ps -u, pkill -u
  4. 종료 기록 남기기

kill·pkill 프로세스 종료 핵심 명령어

kill 1234                 # TERM(기본)
sleep 3
kill -0 1234 2>/dev/null && kill -9 1234    # 아직 있으면 KILL

pgrep -f long_job                      # 명령줄로 PID 찾기
pkill -f long_job                      # 같은 조건으로 종료
pgrep -u john                          # john 의 프로세스

ps -u john -o pid,%cpu,etime,args --sort=-%cpu | head -2   # CPU 최상위
pid=$(pgrep -o -f long_job)
kill "$pid" && echo "$pid" > /tmp/terminated.txt           # 기록
  • pgrep 이름 은 프로그램명(15자)만 봅니다. bash worker.sh 로 띄운 것은 pgrep -f worker.sh 여야 잡힙니다.
  • 다른 사용자의 프로세스를 끝내려면 root 여야 합니다.

kill·pkill 프로세스 종료 자주 하는 실수

  • 바로 kill -9 — 정상 종료 기회를 주지 않습니다. TERM → 대기 → KILL.
  • pkill 이름 이 안 잡힘 — 프로그램명이 다를 수 있으니 먼저 pgrep -f 로 확인.
  • 기록 파일에 PID 외의 텍스트 — 지문이 "PID 한 줄"이면 숫자만.

kill·pkill 프로세스 종료 실습 문제

  • 특정 사용자 소유 프로세스 확인
  • 프로세스명 기준으로 프로세스 종료하기
  • 장시간 실행 중인 프로세스 종료하고 기록 남기기

다음 편

다음 편은 PID 파일 관리와 TERM→KILL 폴백 입니다. 화·금요일에 이어집니다.

<!-- publish_key:linux-path-20w-p18-post -->

댓글 0

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.