본문 바로가기

카테고리 없음

리눅스 프로세스 관리 방법: ps·kill·pkill 명령어로 프로그램 제어하기

 

리눅스 서버를 운영하다 보면 프로그램이 갑자기 멈추거나 응답하지 않는 상황이 발생할 수 있습니다. 서버의 CPU 사용량이 비정상적으로 높아지거나 메모리를 많이 사용하는 프로그램을 찾아 종료해야 하는 경우도 있습니다.

이때 알아두면 유용한 것이 바로 리눅스 프로세스 관리 명령어입니다.

대표적으로 ps, kill, pkill 명령어를 사용하면 현재 실행 중인 프로그램을 확인하고, 특정 프로세스를 종료하거나 이름을 기준으로 프로그램을 제어할 수 있습니다.

이번 글에서는 리눅스 프로세스의 기본 개념부터 ps 명령어로 실행 중인 프로그램을 확인하는 방법, kill과 pkill로 프로세스를 종료하는 방법까지 초보자도 이해하기 쉽게 알아보겠습니다.

참고: 제목에 적으신 pkoill은 일반적으로 사용하는 명령어인 **pkill**을 의미합니다.


1. 리눅스 프로세스란 무엇인가?

프로세스(Process)는 현재 리눅스 시스템에서 실행되고 있는 프로그램을 의미합니다.

예를 들어 Nginx 웹서버를 실행하면 Nginx와 관련된 프로세스가 만들어집니다. MySQL이나 Docker, Python 프로그램 등을 실행할 때도 각각 프로세스가 생성됩니다.

리눅스에서는 실행 중인 각각의 프로세스에 PID(Process ID)라는 고유한 번호가 부여됩니다.

예를 들어 다음과 같은 형태입니다.

PID    COMMAND
1250   nginx
2310   mysqld
3456   python

여기서 1250, 2310, 3456과 같은 숫자가 각각의 프로세스를 구분하는 PID입니다.

프로세스를 종료하거나 특정 프로그램을 제어할 때 이 PID가 중요한 역할을 합니다.


2. 현재 실행 중인 프로세스 확인하기

리눅스에서 실행 중인 프로세스를 확인할 때 가장 기본적으로 사용하는 명령어가 ps입니다.

ps

현재 터미널과 관련된 기본적인 프로세스를 확인할 수 있습니다.

하지만 서버에서 실행 중인 프로세스를 전체적으로 확인하려면 다음 명령어를 많이 사용합니다.

ps aux

또는 다음과 같은 방식도 사용할 수 있습니다.

ps -ef

두 명령어 모두 실행 중인 프로세스를 확인하는 데 많이 사용되지만 출력 형식에는 차이가 있습니다.


3. ps aux 명령어 이해하기

다음 명령어를 실행해 보겠습니다.

ps aux

결과는 대략 다음과 같은 형태로 표시됩니다.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1250  0.2  1.1 123456 23456 ?        S    09:10   0:02 nginx
mysql     2310  2.5  4.3 345678 45678 ?        S    09:10   1:20 mysqld
user      3456 15.3  2.1 234567 34567 pts/0    R+   10:20   0:30 python

여기에서 자주 확인하는 항목은 다음과 같습니다.

항목의미

USER 프로세스를 실행한 사용자
PID 프로세스 번호
%CPU CPU 사용률
%MEM 메모리 사용률
STAT 프로세스 상태
COMMAND 실행 중인 프로그램

특히 PID, CPU 사용량, 메모리 사용량, COMMAND를 확인하면 문제를 일으키는 프로세스를 찾는 데 도움이 됩니다.


4. CPU를 많이 사용하는 프로세스 찾기

서버가 갑자기 느려졌다면 CPU를 많이 사용하는 프로세스부터 확인할 수 있습니다.

ps aux --sort=-%cpu | head

CPU 사용률이 높은 프로세스부터 정렬해서 보여주는 명령어입니다.

메모리를 많이 사용하는 프로세스를 찾으려면 다음과 같이 사용할 수 있습니다.

ps aux --sort=-%mem | head

이 명령어를 활용하면 어떤 프로그램이 서버 자원을 많이 사용하고 있는지 빠르게 확인할 수 있습니다.


5. 특정 프로세스 검색하기

프로세스 목록이 너무 많다면 grep을 함께 사용할 수 있습니다.

예를 들어 Nginx 프로세스를 찾으려면 다음과 같이 입력합니다.

ps aux | grep nginx

MySQL 프로세스를 확인하려면 다음과 같습니다.

ps aux | grep mysql

다만 grep 명령어 자체도 검색 결과에 표시될 수 있으므로 실제 프로세스를 구분해서 확인해야 합니다.


6. kill 명령어란?

kill은 PID를 기준으로 프로세스에 종료 등의 신호(signal)를 보내는 명령어입니다.

기본적인 사용 방법은 다음과 같습니다.

kill PID

예를 들어 PID가 1250인 프로세스에 종료 신호를 보내려면 다음과 같이 입력합니다.

kill 1250

일반적인 kill PID는 프로세스가 정상적으로 종료할 기회를 주는 방식으로 사용할 수 있습니다.

따라서 프로세스가 정상적으로 종료된다면 강제 종료부터 사용하는 것보다 먼저 일반적인 종료 신호를 사용하는 것이 좋습니다.


7. kill -9는 언제 사용하는가?

프로세스가 정상적인 종료 요청에 응답하지 않는 경우에는 강제 종료 신호를 사용할 수 있습니다.

kill -9 PID

예를 들어 다음과 같습니다.

kill -9 1250

-9는 SIGKILL 신호를 의미하며 프로세스를 즉시 종료시키는 강한 방법입니다.

하지만 kill -9를 무조건 먼저 사용하는 것은 권장하지 않습니다.

프로그램이 정리 작업을 수행할 기회를 갖지 못할 수 있기 때문입니다.

따라서 일반적으로는 먼저 kill PID 등을 사용해 정상적인 종료를 시도하고, 정말 종료되지 않는 경우에 강제 종료를 고려하는 것이 좋습니다.


8. pkill 명령어로 프로그램 이름을 기준으로 종료하기

kill이 PID를 기준으로 프로세스를 제어한다면 pkill은 프로세스 이름 등을 기준으로 프로세스를 종료할 때 사용할 수 있습니다.

예를 들어 특정 조건에 맞는 Nginx 프로세스에 종료 신호를 보내려면 다음과 같이 사용할 수 있습니다.

pkill nginx

하지만 이 명령어는 이름이 일치하는 여러 프로세스에 영향을 줄 수 있으므로 주의해야 합니다.

운영 서버에서는 실행하기 전에 대상 프로세스가 무엇인지 먼저 확인하는 것이 안전합니다.


9. pkill을 사용하기 전에 프로세스 확인하기

먼저 Nginx 프로세스를 확인합니다.

ps aux | grep nginx

또는 다음과 같이 확인할 수 있습니다.

pgrep -a nginx

대상이 정확한지 확인한 다음 필요한 경우 pkill을 사용하는 방식이 안전합니다.

특히 데이터베이스나 핵심 시스템 서비스처럼 종료되면 서비스 장애가 발생할 수 있는 프로그램은 더욱 신중하게 접근해야 합니다.


10. 프로세스 종료 전에 확인해야 할 것

프로세스를 종료하기 전에 다음 사항을 확인하는 것이 좋습니다.

① 어떤 프로그램인지 확인

ps -p PID -f

② 어떤 사용자가 실행했는지 확인

ps -o user,pid,ppid,cmd -p PID

③ CPU와 메모리 사용량 확인

ps -p PID -o pid,user,%cpu,%mem,cmd

이렇게 프로세스 정보를 먼저 확인한 후 종료 여부를 판단하는 것이 안전합니다.


11. 프로세스 상태 확인하기

ps 결과에서 STAT 항목을 통해 프로세스의 상태를 확인할 수 있습니다.

대표적인 상태는 다음과 같습니다.

상태의미

R 실행 중 또는 실행 대기
S 대기 상태
D 중단할 수 없는 대기 상태
T 중지된 상태
Z 좀비 프로세스

특히 Z 상태의 프로세스가 계속 증가한다면 부모 프로세스가 자식 프로세스를 제대로 처리하지 못하는 상황인지 확인할 필요가 있습니다.


12. 프로세스 관리 실무 예제

서버가 갑자기 느려졌다고 가정해 보겠습니다.

먼저 CPU 사용량이 높은 프로세스를 찾습니다.

ps aux --sort=-%cpu | head

특정 프로세스의 PID가 2450이라고 확인되었다면 상세 정보를 확인합니다.

ps -p 2450 -f

문제가 확인되고 정상적인 종료가 필요하다면 다음과 같이 종료 신호를 보낼 수 있습니다.

kill 2450

종료 여부를 다시 확인합니다.

ps -p 2450

프로세스가 계속 실행되고 있고 정상적인 종료가 되지 않는다면 상황을 확인한 후 강제 종료를 고려할 수 있습니다.

kill -9 2450

중요한 것은 프로세스의 역할을 확인한 후 종료하는 것입니다.


13. 프로세스 관리와 top 명령어 함께 사용하기

서버의 실시간 상태를 확인할 때는 top 명령어도 매우 유용합니다.

top

top을 실행하면 CPU, 메모리, Load Average와 함께 현재 실행 중인 프로세스를 실시간으로 확인할 수 있습니다.

특히 서버가 갑자기 느려졌을 때 다음 순서로 확인하면 편리합니다.

서버 이상 발생
      ↓
top으로 CPU·RAM 확인
      ↓
문제 프로세스 확인
      ↓
ps로 프로세스 상세 정보 확인
      ↓
PID 확인
      ↓
kill 또는 필요한 경우 pkill 사용

이렇게 여러 명령어를 함께 사용하면 서버 장애 원인을 찾는 데 도움이 됩니다.


14. 프로세스 관리에서 주의할 점

리눅스 서버에서 프로세스를 종료할 때는 무조건 강제 종료하는 것보다 원인을 먼저 확인하는 것이 중요합니다.

특히 다음과 같은 프로세스는 신중하게 관리해야 합니다.

  • 데이터베이스
  • 웹서버
  • SSH 관련 프로세스
  • 시스템 핵심 프로세스
  • Docker 관련 프로세스
  • 운영 중인 애플리케이션

잘못된 프로세스를 종료하면 서비스가 중단되거나 데이터 처리에 문제가 발생할 수 있습니다.

또한 pkill은 조건에 맞는 여러 프로세스에 영향을 줄 수 있기 때문에 실행 전에 검색 결과를 확인하는 습관이 필요합니다.


15. 리눅스 프로세스 관리 명령어 한눈에 보기

명령어용도

ps aux 실행 중인 프로세스 확인
ps -ef 프로세스 전체 목록 확인
top 프로세스 실시간 모니터링
pgrep 프로세스 검색
kill PID PID로 종료 신호 전송
kill -9 PID 프로세스 강제 종료
pkill 이름 프로세스 이름 등을 기준으로 종료
ps -p PID -f 특정 프로세스 상세 확인

마무리

리눅스 서버에서 프로그램이 비정상적으로 동작하거나 CPU와 메모리 사용량이 급증했을 때는 프로세스를 확인하고 적절하게 제어하는 능력이 중요합니다.

가장 기본적인 흐름은 다음과 같습니다.

ps aux

실행 중인 프로세스를 확인하고,

ps aux --sort=-%cpu | head

CPU를 많이 사용하는 프로세스를 찾습니다.

그다음 문제가 되는 프로세스의 PID를 확인한 후,

kill PID

정상적인 종료를 시도할 수 있습니다.

프로세스 이름을 기준으로 관리해야 하는 경우에는 pkill을 사용할 수 있습니다.

다만 kill -9나 pkill은 서버의 다른 프로세스에 영향을 줄 가능성이 있으므로 대상 프로세스를 반드시 확인한 후 사용하는 것이 안전합니다.

리눅스 프로세스 관리는 단순히 프로그램을 종료하는 기술이 아니라 서버의 CPU·메모리 사용량을 분석하고 장애 원인을 찾는 기본적인 서버 관리 방법입니다.

함께 알아두면 좋은 리눅스 서버 명령어

  • top : CPU와 메모리 사용량을 실시간으로 확인
  • htop : 프로세스를 보기 편하게 모니터링
  • ps : 실행 중인 프로세스 확인
  • kill : PID를 이용해 프로세스 제어
  • pkill : 프로세스 이름 등을 기준으로 제어
  • pgrep : 프로세스 검색
  • free -h : 메모리 사용량 확인
  • df -h : 디스크 사용량 확인
  • journalctl : 시스템 로그 확인

 

 


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름