본문 바로가기
리눅스/기초 학습

Day 6: 프로세스 및 서비스 관리

by CBROJIN 2025. 8. 2.

1) 학습 요약표

학습 내용 설명
프로세스 확인 ps, top 명령어로 현재 실행 중인 모든 프로세스 상태 확인
프로세스 종료 kill, killall로 특정 PID 또는 이름 기반 프로세스 종료
서비스 제어 systemctl, service로 서비스 상태 확인, 시작/중지/재시작 제어
시스템 상태 확인 uptime, free, env로 시스템 부하, 메모리, 환경 변수 등 점검
 

2) 이론 설명

1. ps 명령어

기능: 현재 시스템에서 실행 중인 프로세스를 표 형식으로 출력합니다.

주요 옵션:

  • ps aux: 모든 사용자의 프로세스를 BSD 형식으로 출력
  • ps -ef: UNIX 스타일의 포맷으로 출력 (UID, PID, PPID 등 확인 가능)
  • --sort: 출력 결과를 특정 기준으로 정렬 (예: -%mem, -%cpu 등)
ps aux --sort=-%mem | head
  • 메모리 사용량이 높은 순서대로 상위 10개 프로세스를 출력합니다.

출력 컬럼 해설 예시:

  • USER: 프로세스를 실행한 사용자
  • PID: 프로세스 ID
  • %CPU: CPU 사용 비율
  • %MEM: 메모리 사용 비율
  • VSZ: 가상 메모리 크기 (KB)
  • RSS: 실제 사용 메모리 크기 (KB)
  • TTY: 연결된 터미널
  • STAT: 프로세스 상태 (S=Sleep, R=Running, Z=Zombie 등)
  • TIME: 누적 CPU 사용 시간
  • COMMAND: 실행된 명령어
 

2. top 명령어

기능: 실시간으로 전체 프로세스의 상태(CPU, 메모리 사용률 등)를 표시합니다.

top

top 상단 요약 해석:

  • load average: 1, 5, 15분 평균 시스템 부하 (0.00 ~ 1.00이 안정적)
  • Tasks: 현재 총 프로세스 수, 실행 중/슬립 중/중지 등 상태별 수치
  • %Cpu(s): 사용자/시스템/유휴 등 CPU 사용 분포
  • KiB Mem: 총 메모리, 사용 중, 캐시, 여유 메모리 등

키보드 조작:

  • q: 종료
  • k: PID 입력하여 종료 (SIGTERM 기본)
  • M: 메모리 사용량 기준 정렬
  • P: CPU 사용량 기준 정렬
  • H: 스레드 보기 (멀티스레드 프로그램 구조 확인 시 유용)
  • i: idle(유휴) 프로세스 숨김 (실제 사용 중인 프로세스만 확인 시 사용)
 

3. kill, killall 명령어

기능: 프로세스를 종료할 때 사용합니다.

하위 개념: 시그널 (signal)은 프로세스에 명령을 보내는 방법입니다.

  • SIGTERM(15): 정상 종료 요청 (프로세스가 종료 준비 가능)
  • SIGKILL(9): 강제 종료 (즉시 종료, 복구 불가)
kill -15 1234  # 정상 종료 요청
kill -9 1234   # 강제 종료
killall -9 apache2  # apache2 이름 기반으로 모든 프로세스 종료
 

4. systemctl, service 명령어

기능: 시스템에서 서비스 단위를 시작, 중지, 상태 확인하는 명령어입니다. (systemd 기반)

단위(Unit)란? → systemd에서 서비스, 타이머, 마운트 등을 관리하는 단위

명령어 비교:

  • systemctl: 최신 시스템에서 사용 (systemd)
  • service: 구형 방식 (SysVinit), 호환용으로 제공됨
명령어 설명
systemctl status ssh ssh 서비스 상태 확인
systemctl start ssh 서비스 시작
systemctl stop ssh 서비스 중지
systemctl restart ssh 서비스 재시작
systemctl enable ssh 부팅 시 자동 시작 설정
systemctl disable ssh 자동 시작 해제
systemctl is-active ssh 현재 활성화 여부 확인
systemctl is-enabled ssh 자동 시작 설정 여부 확인
systemctl list-units --type=service
  • 현재 실행 중인 서비스 목록 확인
 

5. journalctl 명령어

기능: 서비스 및 시스템의 로그를 확인할 수 있는 명령어입니다.

주요 옵션:

  • -xe: 상세 오류 중심 로그 출력
  • -u <서비스명>: 특정 서비스에 대한 로그 확인
  • -f: tail -f 처럼 실시간 출력
  • --since, --until: 시간 필터링
journalctl --since today
journalctl --since "2025-08-01 00:00:00" --until "2025-08-01 23:59:59"
 

6. 시스템 상태 확인 명령어

uptime       # 시스템 부하 평균 (load average)
free -m      # 메모리 상태 (MB 단위)
env | less   # 전체 환경 변수 확인 (PATH 등)

부가 설명:

  • load average는 CPU 대기열 수를 의미. CPU 수보다 수치가 높으면 과부하.
  • free -m에서 used, available은 메모리 캐시 상태 포함/제외 여부에 따라 다름.
  • env: 환경변수(PATH, HOME 등)를 통해 실행 환경 설정됨

 

3) 기본 실습 과제 

과제 1 : sshd 서비스가 실행 중인지 확인하고, 관련 프로세스를 조회하세요.

과제 2 : CPU 사용률이 높은 프로세스 5개를 출력하세요.

과제 3 : PID 1234번의 프로세스가 존재한다면 종료하세요.

과제 4 : cron 서비스의 상태가 비정상이면, 로그를 확인해 원인을 파악하세요.

과제 5 : 시스템 메모리 상태를 확인하세요.