윈도우를 쓰다가 프로그램이 멈추면 본능적으로 Ctrl + Alt + Del을 눌러 작업 관리자를 켭니다. 그리고 "작업 끝내기"를 누르죠.
리눅스 서버에서도 똑같은 일이 일어납니다.
잘 돌던 웹 서버가 멈추거나, 잘못 짠 코드가 메모리를 다 잡아먹고 '좀비'가 되어버리는 경우입니다.
이때 엔지니어는 검은 터미널 창에서 좀비가 된 프로세스를 찾아내어 강제로 종료시켜야 합니다.
하지만 무턱대고 죽이면 데이터가 날아갈 수 있습니다.
상황에 맞는 올바른 '명령어'와 '강도(시그널)'를 선택하는 법을 알아봅니다.

1. kill (정확한 PID 조준)
가장 기본이 되는 명령어입니다. 이름이 무시무시하게 kill이지만, 사실은 프로세스에게 "신호(Signal)를 보내는" 명령어입니다.
이 명령어를 쓰려면 먼저 타겟의 "PID, Process ID"를 알아야 합니다.
보통 ps -ef | grep [프로그램명] 명령어로 PID 숫자를 찾아낸 뒤 방아쇠를 당깁니다.
- 특징: 정확하게 내가 원하는 프로세스 하나만 콕 집어서 죽일 수 있습니다.
- 사용법: kill 1234 (PID가 1234인 녀석을 종료해라)

2. killall vs pkill (이름으로 쓸어버리기)
서버에서 httpd나 nginx 같은 웹 서버는 프로세스가 수십 개, 수백 개씩 떠 있습니다.
이걸 PID 하나하나 찾아서 kill로 지우려면 밤을 새워야 합니다. 이때 이름으로 한 번에 죽이는 도구를 씁니다.
killall (이름이 똑같으면 다 죽어) 프로세스 '이름이 완벽하게 일치'하는 모든 녀석을 한 번에 종료합니다.
- 사용법: killall nginx (nginx라는 이름의 프로세스 전멸)
pkill (비슷하면 다 죽어) 이름의 '일부만 맞아도(패턴)' 죽입니다. 편리하지만 위험할 수도 있습니다.
- 사용법: pkill java (이름에 java가 들어가는 모든 프로세스 종료)

3. 부드럽게 보낼까? 확실하게 보낼까? (시그널 15 vs 9)
kill 명령어를 쓸 때 옵션으로 숫자를 붙이는 것을 본 적이 있을 겁니다.
kill -9 같은 것이죠. 이 숫자가 바로 "어떻게 죽일 것인가"를 결정하는 시그널(Signal)입니다.
수십 가지가 있지만, 딱 2개만 기억하면 됩니다.
기본값: -15 (SIGTERM, Termination)
- 의미: "야, 이제 그만하고 퇴근해." (정중한 권유)
- 동작: 프로세스에게 종료하라는 신호를 보내면, 프로세스는 하던 작업을 저장하고, 열려 있는 파일을 닫고, 메모리를 정리한 뒤 '스스로' 종료합니다.
- 중요: 아무 옵션 없이 그냥 kill을 치면 기본적으로 이 15번 신호가 나갑니다. 가장 안전합니다.
강제 종료: -9 (SIGKILL, Kill)
- 의미: "닥치고 당장 사라져!" (강제 집행)
- 동작: 프로세스의 의사는 무시합니다. 리눅스 커널이 칼을 뽑아 그 즉시 프로세스의 목을 칩니다. 저장하지 못한 데이터는 날아가고, 파일이 깨질 수도 있습니다.
- 언제 쓰나: 15번으로 정중하게 말했는데도 프로그램이 맛이 가서(응답 없음) 종료되지 않을 때, 최후의 수단으로 씁니다.

4. 올바른 종료 순서 (Best Practice)
초보자들은 급한 마음에 무조건 kill -9부터 날리곤 합니다.
하지만 DB 서버 같은 중요 장비에서 그랬다간 데이터가 깨져서 복구가 불가능해질 수 있습니다.
올바른 순서는 다음과 같습니다.
- 조회: ps -ef | grep nginx 로 PID를 확인한다.
- 권유: kill -15 [PID] 로 부드럽게 종료를 시도한다. (잠시 기다림)
- 확인: 다시 ps로 확인해 본다. 아직도 살아있는가?
- 강제: 끈질기게 안 죽는다면 그때 kill -9 [PID] 로 강제 종료한다.

5. 요약
- kill: PID를 알아야 함. 저격수처럼 하나씩.
- killall / pkill: 이름으로 여러 개를 한 방에.
- -15 (SIGTERM): 정상 종료. 안전함. (1순위)
- -9 (SIGKILL): 강제 종료. 데이터 손실 위험. (최후의 수단)
터미널 앞에서 멈춘 서버를 보며 식은땀 흘리지 마시고, 침착하게 -15부터 날려보는 여유를 가지시길 바랍니다.

📌 함께 읽어보면 좋은 글
서버용으로 가장 많이 쓰는 우분투(Ubuntu)와 록키 리눅스(Rocky Linux), 센트OS(CentOS) 중 우리 회사엔 뭐가 맞을까요? 배포판별 특징과 선택 가이드를 정리했습니다.
'OS & Software > Linux' 카테고리의 다른 글
| 리눅스를 통째로 가상화 서버로 만든다고? KVM 완벽 이해 (0) | 2026.02.27 |
|---|---|
| 리눅스 Top vs Htop: 작업 관리자 대신 쓰는 리눅스 모니터링 툴. CPU, 메모리 사용량 실시간으로 보는 법 (0) | 2026.01.19 |
| 파일 전송 (SCP vs SFTP): 윈도우 PC에 있는 파일을 리눅스 서버로 업로드하는 가장 안전한 방법 (0) | 2026.01.04 |
| 리눅스 파일 권한(Permission) 정복: chmod 777은 절대 쓰지 마라? rwx 숫자 표기법과 소유권(chown) 개념 정리 (0) | 2025.12.31 |
| 리눅스 필수 명령어 TOP 10: ls, cd, mkdir... 검은 화면이 두려운 사람을 위한 리눅스 생존 명령어 (0) | 2025.12.31 |