리눅스 정보실

리눅스에서 특정 프로세스 강제 종료하는 방법

고지존 2025. 8. 21. 17:32
반응형

서버를 운영하다 보면 특정 프로세스가 응답하지 않거나 CPU를 과도하게 점유하는 상황이 자주 발생합니다. 이때 단순히 기다리기보다는 문제 프로세스를 정확히 확인하고 종료하는 것이 중요합니다. 이번 글에서는 실전 상황을 기준으로 kill, pkill, killall을 단계별로 활용하는 방법을 안내합니다.

1. 문제 상황 확인

예를 들어, nginx 웹서버가 응답하지 않는다고 가정해보겠습니다. 우선 CPU 사용률과 프로세스 상태를 확인합니다.

top -c

 

top -c 예제 화면

 

CPU 점유율이 100%에 가까운 nginx 프로세스를 발견했다면, 다음 단계로 넘어갑니다.

2. PID 확인

종료할 프로세스를 정확히 확인하기 위해 PID를 조회합니다.

ps -ef | grep nginx

출력 예시:

root      3241     1  0 10:15 ?        00:00:00 nginx: master process /usr/sbin/nginx
www-data  3245  3241  50 10:15 ?        00:30:12 nginx: worker process
www-data  3246  3241  50 10:15 ?        00:29:58 nginx: worker process
user      3500  3450  0 10:20 pts/0    00:00:00 grep --color=auto nginx

- 3241: master process PID - 3245, 3246: worker process PID - 마지막 줄 grep 명령은 종료 대상이 아님

3. 개별 프로세스 종료

문제가 있는 워커 프로세스만 종료하고 싶을 때는 kill 명령을 사용합니다.

kill 3245

정상적으로 종료되지 않으면 강제 종료 시그널 -9를 사용합니다.

kill -9 3245

종료 후 ps -ef | grep nginx로 상태를 다시 확인합니다.

4. 이름 기반으로 다수 프로세스 종료

여러 워커 프로세스를 한 번에 종료하고 싶다면 pkill을 사용합니다.

pkill -9 nginx

이 명령은 이름에 "nginx"가 포함된 모든 프로세스를 강제 종료합니다. 주의: 다른 서비스가 영향을 받을 수 있으므로 정확한 이름 확인이 필수입니다.

5. 서비스 전체 종료 및 재기동

필요 시 전체 프로세스를 종료하고 서비스를 재기동할 수 있습니다.

systemctl restart nginx

정상적으로 동작하는지 curl localhost 또는 브라우저 접속으로 확인합니다.

  • SIGTERM 먼저 시도, 데이터 정리를 위해 즉시 -9는 마지막 수단
  • 다수 프로세스 종료 시 이름 확인 필수
  • 반복적으로 문제가 발생하면 근본 원인 분석 필요
  • 장애 로그 확인 후 종료, 임의 종료 후 로그 없이 장애 재발 위험

 

리눅스에서 프로세스 강제 종료는 단순 명령어 사용이 아니라, 실제 장애 상황에서 문제 확인 → PID 파악 → 단계적 종료 → 서비스 정상화 흐름으로 진행해야 합니다. 이번 글에서 소개한 단계별 실전 매뉴얼을 숙지하면, 서버 운영 중 발생하는 문제를 안전하고 효율적으로 해결할 수 있습니다.

반응형