본문 바로가기

학위공부/IT 자격증

2026 리눅스마스터 2급 ⑥ 프로세스 관리|ps·top·kill·jobs·nice 핵심정리

리눅스 터미널과 서버, 펭귄 캐릭터, 학습 체크리스트로 구성한 리눅스마스터 2급 전체 학습지도 대표 이미지

결론부터 말하면, 프로세스 관리는 ‘찾기 → 상태 해석 → 필요한 대상에 신호 보내기 → 우선순위 조정’의 순서로 공부하면 됩니다. ps는 한 시점의 목록, top은 계속 갱신되는 화면, kill은 이름과 달리 프로세스에 시그널을 보내는 명령입니다. 바로 kill -9부터 쓰는 습관은 개념상으로도 운영상으로도 좋지 않습니다.

KAIT 현행 출제기준은 리눅스마스터 2급에서 프로세스의 개념 및 유형, 프로세스 Utility를 다룹니다. 이 글은 Bash 작업 제어와 procps-ng 4.0 계열의 공식 자료를 중심으로 PID·PPID, 포그라운드·백그라운드, 상태 코드, 시그널, nice 값을 연결합니다. 전체 과목 지도는 2026 리눅스마스터 2급 전체 학습지도에 있습니다.

프로세스 명령 핵심 비교표

도구 주요 목적 시험에서 구별할 점
ps 실행 시점의 프로세스 정보를 한 번 출력 스냅샷이며 선택·출력 옵션을 조합할 수 있음
top 시스템 요약과 프로세스 목록을 반복 갱신 실시간에 가까운 대화형 관찰 도구
pgrep 이름이나 속성으로 PID 검색 문자열 grep보다 프로세스 선택 목적이 분명함
kill PID 또는 작업에 시그널 전달 기본 시그널은 일반적으로 TERM, 무조건 종료 명령이 아님
jobs 현재 셸이 관리하는 작업 목록 출력 시스템 전체 프로세스 목록이 아님
bg/fg 정지된 작업을 백그라운드·포그라운드에서 재개 PID 대신 %1 같은 작업 지정자를 자주 사용
nice 새 명령을 조정된 nice 값으로 시작 이미 실행 중인 프로세스에는 사용하지 않음
renice 실행 중인 프로세스의 nice 값 변경 일반 사용자는 보통 자신의 프로세스를 덜 우선하도록만 조정

프로그램·프로세스·작업의 차이

  • 프로그램: 디스크에 저장된 실행 가능한 코드와 데이터
  • 프로세스: 프로그램이 실행되어 메모리·CPU 시간·열린 파일 같은 자원을 가진 상태
  • PID: 프로세스를 식별하는 번호, PPID는 부모 프로세스의 PID
  • 작업(job): 대화형 셸이 하나의 명령 또는 파이프라인을 관리하기 위해 붙인 단위

한 작업이 파이프라인이라면 여러 프로세스로 구성될 수 있습니다. 따라서 %1 같은 작업 번호와 운영체제가 부여한 PID를 같은 번호 체계로 보면 안 됩니다.

ps로 필요한 열만 읽기

# 현재 사용자 프로세스를 선택한 열로 확인
ps -u "$USER" -o pid,ppid,stat,ni,comm

# 특정 PID만 확인
ps -p $$ -o pid,ppid,stat,ni,etime,comm

# 이름과 명령행을 함께 검색
pgrep -a bash

procps-ng의 ps는 UNIX식 -e, BSD식 aux, GNU식 --sort 등 여러 옵션 문법을 받아들입니다. BSD식 옵션을 섞으면 기본 선택이나 표시가 달라질 수 있으므로, 결과를 예측하려면 한 예제 안에서 문법을 일관되게 쓰는 편이 좋습니다.

자주 보는 상태 코드

코드 의미 주의
R 실행 중 또는 실행 대기 항상 CPU를 점유 중이라는 뜻은 아님
S 인터럽트 가능한 대기 일반적인 잠든 상태
D 인터럽트 불가능한 대기 주로 I/O 대기와 연결됨
T 작업 제어 신호로 정지 bg/fg로 재개 가능
Z 종료했지만 부모가 상태를 회수하지 않은 좀비 이미 종료했으므로 좀비 자신을 kill하는 것으로 해결되지 않음

top은 반복 갱신, ps는 스냅샷

top은 시스템 요약과 커널이 관리 중인 작업 목록을 동적으로 보여 줍니다. CPU·메모리 비율은 측정 구간과 표시 설정에 영향을 받으므로 한 숫자만 보고 원인을 단정하지 말고 PID, 상태, 실행 시간, 명령을 함께 확인해야 합니다.

top
# 도움말: h 또는 ?
# 종료: q

실습 중 topkr은 실제 프로세스에 영향을 줄 수 있습니다. 처음에는 보기와 정렬만 연습하세요.

안전한 시그널 실습

아래 예시는 연습을 위해 자신이 만든 sleep 프로세스 하나만 대상으로 합니다. TERM은 프로그램이 정리 작업을 할 기회를 주는 일반적인 종료 요청이고, KILL은 잡거나 무시하거나 처리할 수 없어 마지막 수단으로 남겨야 합니다.

sleep 300 &
demo_pid=$!

ps -p "$demo_pid" -o pid,ppid,stat,ni,comm
kill -TERM "$demo_pid"
wait "$demo_pid" 2>/dev/null

# 숫자 0은 실제 신호를 보내지 않고 대상·권한 확인에 사용
kill -0 $$ && printf 'current shell is reachable\n'

kill -l은 시그널 이름을 확인합니다. 번호는 시스템에 따라 차이가 있을 수 있으므로 답안을 쓸 때는 SIGTERM, SIGKILL, SIGSTOP, SIGCONT처럼 이름과 목적을 먼저 연결하세요.

포그라운드·백그라운드 작업 제어

# 대화형 Bash에서 실행
sleep 120 &
jobs -l
fg %+

# fg로 가져온 뒤 Ctrl+Z를 누르면 정지
bg %+
jobs -l
kill %+

&는 처음부터 백그라운드로 시작합니다. 위 예시의 %+는 현재 작업, 즉 방금 만든 sleep 작업을 가리킵니다. Ctrl+Z는 보통 포그라운드 작업에 정지 신호를 보내며, 종료가 아닙니다. jobs는 현재 셸의 작업표만 보므로 다른 터미널이나 서비스의 프로세스는 ps, pgrep, top으로 찾아야 합니다.

nice와 renice

nice 값은 일반적으로 -20부터 19 범위이며 값이 작을수록 더 우호적으로, 값이 클수록 덜 우호적으로 스케줄됩니다. 다만 nice는 실시간 스케줄링 우선순위 그 자체가 아니라 일반 스케줄러에 주는 힌트입니다.

# 새 프로세스를 nice 값 5만큼 덜 우선하도록 시작
nice -n 5 sleep 120 &
demo_pid=$!
ps -p "$demo_pid" -o pid,ni,stat,comm

# 실행 중인 자신의 프로세스를 nice 값 10으로 변경
renice --priority 10 -p "$demo_pid"
kill -TERM "$demo_pid"

GNU nice -n 5는 현재 niceness에 조정값을 더해 새 명령을 시작합니다. util-linux의 renice는 기본적으로 절대값을 받으며, -n 해석은 POSIXLY_CORRECT 설정과 구현 차이에 영향을 받을 수 있습니다. 시험에서는 새 프로세스는 nice, 기존 프로세스는 renice라는 구분부터 확실히 잡으세요.

자주 틀리는 지점

  • kill은 종료만 하는 명령이 아니라 시그널 전달 도구입니다.
  • jobs는 시스템 전체가 아니라 현재 셸의 작업을 표시합니다.
  • Ctrl+Z는 종료가 아니라 정지이고, Ctrl+C는 보통 인터럽트 신호입니다.
  • nice 값이 클수록 CPU 우선도가 높아진다고 외우면 반대입니다.
  • 좀비는 이미 실행을 끝낸 상태이므로 원인은 부모의 회수 처리에서 찾아야 합니다.

직접 만든 셀프체크 5문항

  1. pstop의 가장 큰 표시 방식 차이는 무엇인가?
  2. PID와 %1 같은 작업 번호는 무엇이 다른가?
  3. kill에 시그널을 생략했을 때 일반적으로 요청되는 신호는 무엇인가?
  4. 새 프로세스와 이미 실행 중인 프로세스의 nice 값을 조정할 때 각각 어떤 명령을 쓰는가?
  5. 상태 코드 Z인 프로세스에 KILL을 보내도 좀비 문제가 직접 해결되지 않는 이유는 무엇인가?
정답 확인
  1. ps는 실행 시점의 스냅샷을 출력하고, top은 목록과 요약을 반복 갱신합니다.
  2. PID는 운영체제의 프로세스 식별자이고, 작업 번호는 현재 셸이 명령·파이프라인을 관리하기 위해 붙인 식별자입니다.
  3. SIGTERM입니다.
  4. 새 프로세스는 nice, 실행 중인 프로세스는 renice를 사용합니다.
  5. 좀비는 이미 종료했고 부모가 종료 상태를 회수하지 않은 항목이므로, 실행 중인 프로세스처럼 다시 종료할 대상이 아니기 때문입니다.

공식 자료

이 글은 2026년 7월 11일 갱신했습니다. procps-ng 최신 릴리스와 KAIT 시험 대상 배포판의 탑재 버전은 다를 수 있으므로, 공통 옵션과 개념을 우선했습니다. 실제 시스템에서는 종료 전에 PID·사용자·명령행을 다시 확인하세요.

리눅스마스터 2급 전체 학습지도로 돌아가기