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 : 시스템 메모리 상태를 확인하세요.

'리눅스 > 기초 학습' 카테고리의 다른 글
Day 5: 파일 검색, 백업 & 자원 확인 (1) | 2025.08.01 |
---|---|
Day 4: 권한 및 소유권 (파일/디렉토리 퍼미션 관리) (2) | 2025.07.30 |
Day 3: 사용자 및 그룹 관리 (2) | 2025.07.24 |
Day 2: 텍스트 출력 & 필터링 (2) | 2025.07.21 |
Day 1.5: 리눅스에서 자주 쓰지만 초보자가 놓치기 쉬운 개념들 (3) | 2025.07.20 |