리눅스에서 CPU 100% 프로세스 찾기와 종료 방법

리눅스 환경에서는 여러 개의 프로세스가 동시에 실행되며 CPU, 메모리, 디스크, 네트워크 등 다양한 자원을 공유합니다. 하지만 특정 프로세스가 CPU를 100% 점유하는 경우, 시스템 성능이 급격히 저하될 수 있습니다. 이번 글에서는 CPU를 100% 사용하는 프로세스를 찾고 종료하는 방법을 실습 형태로 정리해 보겠습니다.
리눅스의 핵심 역할
리눅스 커널은 크게 두 가지 핵심 역할을 담당합니다:
- 프로세스 관리
여러 프로세스가 동시에 실행될 때 CPU 스케줄링, 메모리 사용량 등을 관리합니다. - 하드웨어 자원 관리
CPU, 메모리, 디스크, 네트워크 같은 시스템 자원에 대한 접근 권한을 제어하고 분배합니다.
즉, 모든 프로세스는 리눅스를 거쳐야만 하드웨어 자원을 사용할 수 있으며, 이 구조 덕분에 자원 충돌을 방지할 수 있습니다.

실습: CPU 100% 프로세스 생성 및 확인
1. CPU를 100% 점유하는 프로세스 생성
테스트용으로 yes 명령어를 실행합니다.
yes > /dev/null &
- yes 명령은 무한히 문자열을 출력하므로 CPU를 계속 사용합니다.
- & 기호를 붙여 백그라운드에서 실행시킵니다.
백그라운드 실행 여부는 jobs 명령어로 확인할 수 있고, PID는 pgrep yes로 확인할 수 있습니다.
2. TOP 명령어로 확인
top
- top 실행 시 CPU를 가장 많이 쓰는 프로세스가 상단에 표시됩니다.
- yes 프로세스가 CPU를 100% 사용하는 것을 확인할 수 있습니다.
- 종료는 q 키를 눌러 top 화면을 빠져나옵니다.
3. PS 명령어로 확인
ps -eo pid,comm,%cpu --sort=-%cpu | head
- 프로세스를 CPU 사용량 기준으로 정렬하여 상위 몇 개만 확인할 수 있습니다.
- %CPU 값이 높은 프로세스를 빠르게 식별할 수 있습니다.
프로세스 종료하기
1. 일반 종료 (SIGTERM, 신호 15)
kill <PID>
- 프로세스에 SIGTERM(15번 시그널) 을 보내 정상 종료를 시도합니다.
- 시스템 자원을 해제한 뒤 종료되므로 가장 권장되는 방식입니다.
2. 강제 종료 (SIGKILL, 신호 9)
kill -9 <PID>
- 정상 종료가 불가능한 경우 마지막 수단으로 사용합니다.
- 주의: 강제 종료는 파일이나 메모리 자원이 비정상적으로 해제될 수 있어 위험할 수 있습니다.
실습 정리
- yes 명령으로 CPU 100% 프로세스를 생성
- top 과 ps 명령어로 프로세스 확인
- kill 명령으로 정상 종료, 필요시 kill -9로 강제 종료
마무리
리눅스 환경에서 CPU 100% 프로세스를 관리하는 방법은 실제 서버 운영 시 자주 맞닥뜨리게 되는 중요한 문제입니다.
핵심 요약:
- 먼저 top 또는 ps로 문제 프로세스를 식별한다.
- kill (SIGTERM)으로 정상 종료를 시도한다.
- 불가능할 경우 kill -9로 강제 종료한다.
실습을 반복하면서 프로세스 관리에 익숙해진다면, 운영 환경에서 발생하는 다양한 문제를 빠르게 진단하고 해결할 수 있을 것입니다.
추가적으로 리눅스 기초 명령어 공부하고 싶다면도커/K8s/클라우드(AWS) 네트워크 완전 정복를 참고하세요. https://reallinux.co.kr/course/se_network
'리눅스 이야기' 카테고리의 다른 글
| 프로세스가 호출하는 시스템콜 보려면? (0) | 2025.10.15 |
|---|---|
| 프로세스 우선순위 어떻게 바꾸나요? (0) | 2025.10.13 |
| 포트번호 80번 충돌문제 어떻게 해결하죠? (0) | 2025.09.24 |
| 웹서버 404에러 로그만 확인 할 수 있나요? (0) | 2025.09.19 |
| 초간단 웹서버 만들기 Hello, world! (0) | 2025.09.16 |