리눅스 프로세스 관리 개요
리눅스에서 프로세스(Process)는 실행 중인 프로그램 또는 명령어를 말하며, 시스템의 중요한 자원(메모리, CPU 등)을 효율적으로 관리합니다. 리눅스 프로세스 관리에 대해 알아보겠습니다.
프로세스의 기본 개념
- 프로세스 ID (PID): 모든 프로세스는 고유한 프로세스 ID(PID)를 가집니다.
- 부모-자식 관계: 모든 프로세스는 부모 프로세스에서 생성되며, 최상위 부모 프로세스는
init(systemd)
이고 PID는1
입니다. - 프로세스 상태:
- R (Running): 실행 중이거나 실행 준비 상태.
- S (Sleeping): 대기 상태.
- D (Uninterruptible): 종료 불가능한 대기 상태(I/O 작업 중).
- Z (Zombie): 종료되었지만 부모 프로세스가 처리하지 않은 상태.
- T (Stopped): 중지된 상태(예:
Ctrl+Z
로 중단).
프로세스 관련 주요 명령어
1. 프로세스 목록 확인
ps
명령어: 현재 실행 중인 프로세스를 확인합니다.
ps aux
a
: 다른 사용자의 프로세스도 표시.u
: 프로세스 소유자, CPU 사용량 등 상세 정보.x
: 로그인 세션에 연결되지 않은 프로세스도 표시.
2. 실시간 프로세스 모니터링
top
명령어: CPU, 메모리 사용량이 높은 프로세스를 실시간으로 확인.
top
htop
명령어: top
의 개선 버전으로 추가 설치가 필요합니다.
sudo apt install htop
htop
3. 프로세스 종료
kill
명령어: 특정 PID의 프로세스를 종료.
kill -9 PID
killall
명령어: 프로세스 이름으로 종료.
killall 프로세스이름
4. 백그라운드 작업
- 백그라운드 실행:
명령어 &
- 백그라운드 작업 목록 확인:
jobs
- 포그라운드로 가져오기:
fg %작업번호
- 다시 백그라운드로 보내기:
bg %작업번호
프로세스 우선순위와 nice
/renice
1. 프로세스 우선순위
리눅스에서는 프로세스 우선순위(priority)를 통해 CPU 사용권을 조절합니다. 우선순위는 -20
(가장 높은 우선순위)부터 19
(가장 낮은 우선순위)까지 설정됩니다.
2. nice
명령어
새로운 프로세스를 지정된 우선순위로 실행합니다.
nice -n 우선순위 명령어
3. renice
명령어
실행 중인 프로세스의 우선순위를 변경합니다.
renice 우선순위 -p PID
---
좀비 프로세스(Zombie Process)
- 정의: 부모 프로세스가 종료 상태를 수거하지 않아 남아 있는 프로세스.
- 확인:
ps
명령에서 상태가Z
로 표시. - 해결: 부모 프로세스를 종료하거나 시스템을 재부팅.
프로세스 제어 신호
신호 번호 | 이름 | 설명 |
---|---|---|
1 | SIGHUP | 프로세스 재시작. |
9 | SIGKILL | 강제 종료. |
15 | SIGTERM | 정상 종료 요청(기본). |
19 | SIGSTOP | 프로세스 일시 중지. |
데몬 프로세스(Daemon Process)
- 정의: 시스템에서 백그라운드로 실행되며, 주로 서비스 제공에 사용.
- 데몬 관리:
systemctl status 서비스이름 systemctl start 서비스이름 systemctl stop 서비스이름
프로세스 관련 실전 예제
- 특정 사용자의 모든 프로세스 종료:
pkill -u 사용자이름
- CPU 사용률이 높은 프로세스 확인:
ps aux --sort=-%cpu | head
- 메모리 사용률이 높은 프로세스 확인:
ps aux --sort=-%mem | head
리눅스 ps
명령어
ps
(Process Status)는 현재 실행 중인 프로세스 상태를 확인하는 명령어입니다. 시스템에서 실행 중인 프로세스의 PID, 사용자, CPU 및 메모리 사용량 등을 확인할 수 있습니다.
기본 사용법
- 현재 셸에서 실행 중인 프로세스 보기:
ps
- 모든 사용자 프로세스 확인:
ps -e
- 특정 사용자의 프로세스 보기:
ps -u 사용자이름
ps
명령의 주요 옵션
옵션 | 설명 |
---|---|
-e 또는 -A |
시스템의 모든 프로세스 표시. |
-f |
풀 포맷 출력(프로세스의 부모/자식 관계 표시). |
-u 사용자 |
특정 사용자의 프로세스만 표시. |
-p PID |
특정 PID에 해당하는 프로세스만 표시. |
--sort=KEY |
지정된 키(KEY)를 기준으로 정렬(예: %cpu , %mem ). |
고급 사용법
- CPU 사용률이 높은 프로세스 확인:
ps -eo pid,comm,%cpu --sort=-%cpu
- 프로세스 계층 구조 확인:
ps -ef --forest
'Linux' 카테고리의 다른 글
우분투 리눅스에서 MariaDB 설치 및 초기 설정 (0) | 2025.01.22 |
---|---|
리눅스 패키지(apt)과 압축(tar, gz) (0) | 2025.01.22 |
리눅스 사용자 권한 (chmod, chown, chgrp) (0) | 2025.01.21 |
리눅스 sudo(superuser do) 와 su(substitute user) 명령어 (0) | 2025.01.21 |
리눅스 사용자 계정 (0) | 2025.01.21 |