Linux Server 운영에서 Application과 Service는 모두 Process 형태로 실행됩니다.
사용자가 실행하는 명령어부터 Web Server, Database, Container Runtime까지 Linux Kernel은 Process 단위로 작업을 관리합니다.
Process 구조를 이해하면 CPU 사용량 증가, Memory 부족, Server 응답 지연과 같은 다양한 장애 원인을 분석할 수 있습니다.
기본 구조:
User Command↓Shell↓Process 생성↓Linux Kernel 관리↓CPU / Memory Resource 사용
| 구성 요소 | 역할 |
|---|---|
| Process | 실행 중인 프로그램 |
| PID | Process 식별 번호 |
| Parent Process | Process 생성 주체 |
| Child Process | 생성된 하위 Process |
| Kernel | Resource 관리 |
Linux Process 구조를 이해하면 Server 운영, 장애 분석, Performance Optimization에 활용할 수 있습니다.
Linux Process란?
Process는 실행 중인 Program을 의미합니다.
Program은 Disk에 저장된 실행 파일이고 Process는 CPU와 Memory Resource를 할당받아 실행되는 상태입니다.
차이:
| 구분 | Program | Process |
|---|---|---|
| 상태 | 실행 전 파일 | 실행 중 작업 |
| 위치 | Disk | Memory |
| Resource | 사용 안 함 | CPU, Memory 사용 |
예:
nginx 실행 파일↓nginx Process 실행↓Web Service 제공
Linux Process 동작 구조
Linux에서는 Process가 Kernel에 의해 관리됩니다.
전체 구조:
Application↓System Call↓Linux Kernel↓Hardware Resource
Process는 직접 Hardware를 제어하지 않고 Kernel을 통해 Resource를 사용합니다.
Process와 Thread 차이
하나의 Process 내부에는 여러 Thread가 존재할 수 있습니다.
구조:
Process├ Thread 1├ Thread 2└ Thread 3
| 구분 | Process | Thread |
|---|---|---|
| Resource | 독립 보유 | Process 공유 |
| 생성 비용 | 높음 | 낮음 |
| 메모리 | 독립 공간 | 공유 공간 |
| 장애 영향 | 분리 | 같은 Process 영향 |
PID(Process ID)란?
Linux에서는 실행되는 모든 Process에 고유 번호가 부여됩니다.
이를 PID(Process ID)라고 합니다.
확인:
ps aux
예:
PID1024 nginx2048 mysql
PID는 Process 관리에서 가장 중요한 식별 정보입니다.
Parent Process와 Child Process
Linux Process는 다른 Process에 의해 생성됩니다.
구조:
Parent Process↓Child Process↓Grand Child Process
예:
systemd↓nginx↓worker Process
Process 간 관계 분석에 사용됩니다.
init과 systemd Process
Linux 시스템이 시작되면 가장 먼저 실행되는 Process가 있습니다.
현재 Linux에서는 systemd가 PID 1 역할을 수행합니다.
구조:
Kernel↓systemd (PID 1)↓Service Process↓Application Process
systemd는 전체 Service 실행과 관리를 담당합니다.
Linux Process 상태
Process는 실행 상태에 따라 여러 상태를 가집니다.
| 상태 | 의미 |
|---|---|
| Running | 실행 중 |
| Sleeping | 대기 상태 |
| Stopped | 중지 |
| Zombie | 종료 대기 |
| Uninterruptible Sleep | I/O 대기 |
Zombie Process란?
Zombie Process는 실행은 종료되었지만 Parent Process가 종료 정보를 가져가지 않은 상태입니다.
구조:
Child Process 종료↓Exit 정보 유지↓Parent 처리 필요↓Zombie 상태
확인:
ps aux | grep Z
Linux Process 확인 명령어
ps 명령어
현재 Process 목록 확인:
ps aux
확인:
- PID
- CPU 사용량
- Memory 사용량
- 실행 사용자
top 명령어
실시간 Process 확인:
top
확인:
- CPU 사용률
- Memory 사용률
- Load Average
htop 명령어
더 편리한 Process 모니터링 도구입니다.
htop
Process 종료 방법
Process 종료:
kill PID
강제 종료:
kill-9 PID
예:
kill-91234
주의:
강제 종료는 데이터 손상을 발생시킬 수 있으므로 필요한 경우에만 사용합니다.
Signal과 Process 제어
Linux Process는 Signal을 통해 제어됩니다.
대표 Signal:
| Signal | 번호 | 설명 |
|---|---|---|
| SIGTERM | 15 | 정상 종료 요청 |
| SIGKILL | 9 | 강제 종료 |
| SIGHUP | 1 | 설정 Reload |
예:
kill-HUP nginx
Foreground Process와 Background Process
Linux Command는 두 가지 방식으로 실행됩니다.
Foreground Process
사용자가 결과를 기다리는 방식입니다.
예:
ping google.com
Terminal을 점유합니다.
Background Process
뒤에서 실행되는 Process입니다.
실행:
command &
예:
python app.py &
Process Priority와 Nice
Linux는 Process마다 우선순위를 설정할 수 있습니다.
확인:
nice
높은 우선순위:
nice -n-10 command
CPU Resource 사용 우선순위를 조절할 수 있습니다.
CPU Resource와 Process
CPU 사용량이 증가하면 특정 Process를 확인해야 합니다.
확인:
top
또는:
ps aux --sort=-%cpu
확인:
- CPU 과점 Process
- 비정상 실행 Process
Memory와 Process
Memory 부족은 Server 장애의 주요 원인입니다.
확인:
ps aux --sort=-%mem
확인:
- Memory 사용량
- Memory Leak 의심 Process
Linux Process와 OOM Killer
Memory가 부족하면 Linux Kernel은 OOM Killer를 실행할 수 있습니다.
구조:
Memory 부족↓Kernel 판단↓Process 선택↓Process 종료↓Memory 확보
확인:
dmesg | grep-i oom
Process와 Service 관계
Linux Service는 Process 형태로 실행됩니다.
구조:
systemd↓Service↓Process↓Application
예:
nginx.service↓nginx Process
Docker Container와 Process
Container 내부도 결국 Process 기반으로 동작합니다.
구조:
Docker Container↓Main Process↓Application
확인:
docker ps
Container 장애 분석에서도 Process 확인이 중요합니다.
Kubernetes와 Process
Kubernetes Pod 역시 Container Process를 관리합니다.
구조:
Kubernetes Pod↓Container↓Application Process
Process 상태는 Pod Health와 직접 연결됩니다.
Linux Process 장애 분석 순서
장애 발생:
Service 장애↓Process 상태 확인↓CPU 확인↓Memory 확인↓Log 확인↓Restart 또는 조치
Process Monitoring Best Practice
권장:
- CPU Monitoring
- Memory Monitoring
- Process Health Check
- Log 관리
- 비정상 Process 분석
안정적인 Server 운영 환경을 만들 수 있습니다.
Linux Process 장점
| 장점 | 설명 |
|---|---|
| 독립성 | Process별 Resource 관리 |
| 관리성 | PID 기반 제어 |
| 안정성 | 장애 영향 분리 |
| 확장성 | 여러 Application 실행 |
자주 묻는 질문
Process와 Program 차이는 무엇인가요?
Program은 실행 파일이고 Process는 실행 중인 Program입니다.
PID는 왜 필요한가요?
Linux에서 수많은 Process를 구분하고 관리하기 위해 필요합니다.
Process를 종료하면 서비스가 바로 중단되나요?
해당 Process가 Service 핵심 역할을 담당한다면 서비스 중단으로 이어질 수 있습니다.
마무리
Linux Process는 Server 운영의 가장 기본적인 관리 단위입니다.
Application 실행부터 CPU, Memory Resource 관리까지 모든 작업은 Process 기반으로 동작합니다.
| 구성 요소 | 역할 |
|---|---|
| Process | 실행 단위 |
| PID | Process 식별 |
| systemd | Service 관리 |
| Signal | Process 제어 |
| Monitoring | 상태 확인 |
Linux Process 구조를 이해하면 Server 장애 분석, Resource 관리, Docker와 Kubernetes 운영까지 연결되는 핵심 Linux 운영 역량을 구축할 수 있습니다.
함께 보면 좋은 글
- Linux Process란 무엇인가? Process 관리와 실행 구조 이해하기
- Linux Out Of Memory(OOM) Killer가 동작하는 이유와 해결 방법
- Linux Daemon 완벽 가이드! Background Process와 Service 관리 방법 이해하기
- Linux Memory Leak 완벽 가이드! 메모리 누수 원인과 분석 방법 이해하기
- Linux Command 완벽 가이드! 서버 운영 기본 명령어 이해하기