--- title: pkill — 이름으로 프로세스 종료 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 프로세스 이름·패턴으로 찾아 안전하게 신호를 보내는 명령어. tags: 프로그램, 서비스 및 프로세스 관리, pkill --- **💬 "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로 대상을 반드시 확인합니다. ## 실제 실행 화면 대상을 확인한 뒤 정상 종료 신호를 보내고 잔여 프로세스가 없는지 확인한 결과입니다. ![pkill 명령어 실행 결과: 대상 확인과 정상 종료](https://games.cursorai.co.kr/assets/pkill-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/services/pkill.html