pkill — 이름으로 프로세스 종료

Linux / 서비스 및 프로세스 관리 / pkill.html

서비스 및 프로세스 관리원문등록 2026-10-18

💬 "pkill 명령어"

pkill은 이름 패턴으로 프로세스를 찾아 신호를 보냅니다. ps+kill을 조합하는 번거로움을 줄여줍니다.

실수로 다른 프로세스를 죽이지 않도록 -f 사용과 대상을 먼저 확인하는 습관이 중요합니다.

  • 개념: 프로세스 이름/명령줄 패턴으로 대상에 신호를 보냅니다.
  • 기본 신호: 지정하지 않으면 SIGTERM(15)으로 정상 종료를 요청합니다.
  • -f: 명령줄 전체를 대상으로 검색합니다.
  • -0: 실제로 죽이지 않고 대상만 확인합니다.

자주 쓰는 옵션

옵션설명
-f전체 명령줄에서 패턴을 찾습니다(-f 없으면 프로세스 이름만)
-u <사용자>특정 사용자 프로세스만 대상으로 합니다
-9SIGKILL로 강제 종료합니다(정상 종료 실패 시)
-0시그널 없이 대상 확인만 합니다

필수 명령어 조합 3가지

  • pgrep -af 'batch.sh' — 대상 먼저 확인(가장 안전)
  • pkill -u myapp -f 'queue:work' — 사용자·패턴을 함께 지정해 종료
  • pkill -TERM -f 'php-fpm' && sleep 2 && pgrep -af php-fpm — 정상 종료 후 잔여 확인

💬 "이걸 모니터링 지표로 쓰는 방법 알려줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 대상 확인

pgrep으로 무엇이 죽는지 먼저 봅니다.

pgrep -af 'queue:work'

2단계 · 정상 종료 요청

SIGTERM으로 종료를 요청합니다.

pkill -TERM -f 'queue:work'

3단계 · 잔여 확인

남아 있으면 원인을 보고 강제 종료를 검토합니다.

pgrep -af 'queue:work' || echo CLEAN

실무에서는 이렇게 씁니다

1. 멈춘 워커 정리

상황 — 큐 워커가 응답 없이 쌓여 새 워커를 띄워야 합니다.

pkill -TERM -f 'queue:work' && sleep 2 && pgrep -af 'queue:work'

결과 — 워커가 정상 종료되고 남은 프로세스가 없음을 확인합니다.

포인트 — TERM을 먼저 보내야 처리 중 작업이 안전하게 마무리됩니다.

2. 특정 사용자 프로세스만

상황 — 여러 사용자가 함께 쓰는 서버에서 내 작업만 정리합니다.

pkill -u deploy -f 'deploy.sh'

결과 — deploy 사용자 프로세스만 종료되어 다른 사용자에 영향이 없습니다.

포인트 — -u를 붙이지 않으면 같은 이름의 다른 사용자 프로세스도 죽습니다.

주의할 점

  • -f 없이 짧은 이름으로 패턴을 주면 엉뚱한 프로세스가 매칭됩니다.
  • -9는 정리 작업을 건너뛰어 데이터 손실 위험이 있습니다.
  • 시스템에 중요한 프로세스(sshd 등)를 잘못 종료하면 접속이 끊깁니다.
  • 실행 전 pgrep -af로 대상을 반드시 확인합니다.

실제 실행 화면

대상을 확인한 뒤 정상 종료 신호를 보내고 잔여 프로세스가 없는지 확인한 결과입니다.

pkill 명령어 실행 결과: 대상 확인과 정상 종료

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.