pkill — 이름으로 프로세스 종료
Linux / 서비스 및 프로세스 관리 / pkill.html
💬 "pkill 명령어"
pkill은 이름 패턴으로 프로세스를 찾아 신호를 보냅니다. ps+kill을 조합하는 번거로움을 줄여줍니다.
실수로 다른 프로세스를 죽이지 않도록 -f 사용과 대상을 먼저 확인하는 습관이 중요합니다.
- 개념: 프로세스 이름/명령줄 패턴으로 대상에 신호를 보냅니다.
- 기본 신호: 지정하지 않으면 SIGTERM(15)으로 정상 종료를 요청합니다.
- -f: 명령줄 전체를 대상으로 검색합니다.
- -0: 실제로 죽이지 않고 대상만 확인합니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-f | 전체 명령줄에서 패턴을 찾습니다(-f 없으면 프로세스 이름만) |
-u <사용자> | 특정 사용자 프로세스만 대상으로 합니다 |
-9 | SIGKILL로 강제 종료합니다(정상 종료 실패 시) |
-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로 대상을 반드시 확인합니다.
실제 실행 화면
대상을 확인한 뒤 정상 종료 신호를 보내고 잔여 프로세스가 없는지 확인한 결과입니다.

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