공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 05 / 10

프로세스·자원 (ps·top·free·df)

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 ps

ps 는 그 순간의 프로세스 목록입니다. 두 옵션 스타일이 있어 헷갈리지만 두 형태만 씁니다.

명령 뜻
ps -ef 전체, PPID 포함
ps aux 전체, %CPU·%MEM 포함
ps aux --sort=-%mem | head 메모리 상위
ps aux --sort=-%cpu | head CPU 상위
ps -u myapp 사용자별
ps -ef --forest 부모·자식 트리

ps -o pid,ppid,%cpu,%mem,etime,cmd -p PID 로 원하는 열만 볼 수 있습니다. etime 이 실행 경과 시간이라 "언제 떴나" 를 알려 줍니다.

2.2 ps 열 읽기

ps aux 의 열은 사용자, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND 입니다.

열 뜻
RSS 실제 사용 메모리 KB
VSZ 예약 가상 메모리, 참고만
STAT R 실행 S 대기 D I/O대기 Z 좀비
TIME 누적 CPU 시간

STAT 의 D 가 많으면 디스크가 느린 것이고, Z 는 부모가 거두지 않은 좀비로 자원은 안 쓰지만 부모 프로세스 버그 신호입니다.

2.3 pgrep·pkill·kill

bash
pgrep -f 'app.jar'          # 명령줄로 PID 찾기
pgrep -u myapp java         # 사용자·이름으로
pkill -f 'app.jar'          # 찾아서 TERM
kill PID                    # TERM (15)
kill -9 PID                 # KILL, 마지막 수단
kill -l                     # 신호 목록

운영 묶음 03 의 원칙대로 TERM 을 먼저 보내고 기다립니다. pkill -f 는 패턴이 넓으면 엉뚱한 것까지 죽이므로 pgrep -f 로 먼저 목록을 봅니다.

2.4 top 키

top 은 대화형입니다. 열어 놓고 키로 조작합니다.

키 동작
q 나가기
P / M CPU / 메모리 순 정렬
1 코어별 CPU
k PID 입력해 신호 보내기
c 전체 명령줄 표시
H 스레드 단위

스크립트에서는 top -b -n 1 | head -n 15 로 한 화면만 찍습니다. top -p PID 는 하나만, top -H -p PID 는 그 프로세스의 스레드별입니다.

2.5 top 상단 읽기

text
top - 17:20:01 up 30 days, load average: 0.52, 0.61, 0.58
Tasks: 180 total, 1 running, 179 sleeping, 0 zombie
%Cpu(s): 12.0 us, 3.0 sy, 0.0 ni, 84.0 id, 1.0 wa
MiB Mem: 7821.0 total, 1205.0 free, 2410.0 used, 4206.0 buff/cache
MiB Mem: 4980.0 avail Mem
항목 뜻 의심 기준
load average 실행 대기 수 nproc 초과
us 사용자 프로그램 앱이 CPU 사용
sy 커널 시스템 호출 과다
wa I/O 대기 디스크 병목
id 유휴
avail Mem 실제 여유 수백 MB 이하

wa 가 높으면 CPU 가 아니라 디스크 문제입니다. us 가 높으면 상위 프로세스를 보고 자바라면 운영 묶음 09 의 top -H 와 jstack 으로 갑니다.

2.6 free

text
              total        used        free      shared  buff/cache   available
Mem:           7821        2410        1205         120        4206        4980
Swap:          2047           0        2047

available 이 새 프로세스가 쓸 수 있는 양입니다. buff/cache 는 필요하면 즉시 반환되는 캐시라 used 가 커도 문제가 아닙니다. Swap used 가 0 에서 늘기 시작하면 실제 부족입니다.

2.7 vmstat 과 iostat

vmstat 1 5 는 1초 간격으로 5번 전체 통계를 찍습니다. top 보다 흐름을 보기 좋습니다.

열 뜻
r 실행 대기 프로세스
b I/O 대기 프로세스
si / so 스왑 인 / 아웃
us sy id wa CPU 비율

so 가 계속 0 이 아니면 메모리가 스왑으로 밀리는 것입니다. iostat -x 1 3 은 디스크별 %util 과 await 로 어느 디스크가 바쁜지 보여 줍니다. sysstat 패키지에 들어 있습니다.

2.8 df 와 du

bash
df -h                       # 파티션별
df -i                       # inode
du -sh /var/log             # 폴더 합계
du -xh --max-depth=1 / | sort -rh | head

df 가 찼는데 du 로는 안 보이면 삭제된 열린 파일입니다. lsof +L1 로 찾습니다. 운영 묶음 06 이 이 상황의 처치 순서입니다.

2.9 lsof 와 ss

bash
lsof -p PID | wc -l         # 프로세스가 연 파일 수
lsof -i :8080               # 포트를 쓰는 프로세스
lsof -u myapp | head        # 사용자가 연 것
ss -ltnp                    # 듣는 포트
ls /proc/PID/fd | wc -l     # lsof 없을 때 FD 수

lsof -i :포트 는 "누가 이 포트를 잡고 있나" 의 답이고 ss -ltnp 와 같은 정보를 줍니다. 06 네트워크 레슨에서 ss 를 더 봅니다.

2.10 nice 와 renice

우선순위는 -20 이 가장 높고 19 가 가장 낮습니다. 배치나 백업처럼 급하지 않은 작업은 양보하게 합니다.

bash
nice -n 10 tar czf backup.tgz /data      # 낮은 우선순위로 시작
renice -n 5 -p 1234                       # 실행 중인 것 조정
ionice -c3 tar czf backup.tgz /data       # I/O 우선순위 최하

운영 앱과 같은 서버에서 백업을 돌릴 때 nice 와 ionice 를 함께 붙이면 앱 응답이 덜 흔들립니다.

2.11 백그라운드 작업

명령 동작
명령 & 백그라운드로 시작
Ctrl+Z 현재 작업 멈춤
bg 멈춘 작업을 백그라운드로
fg 앞으로 가져오기
jobs 작업 목록
kill %1 작업 번호로 신호
nohup 명령 & 터미널 닫아도 유지

긴 명령을 & 없이 시작했다면 Ctrl+Z 뒤 bg 로 뒤로 보내고 disown 으로 셸에서 떼면 터미널을 닫아도 됩니다.

2.12 /proc 직접 읽기

모든 프로세스 정보는 /proc/PID/ 아래 파일입니다. 도구가 없을 때 직접 읽습니다.

bash
grep -E 'VmRSS|Threads' /proc/1234/status   # 메모리, 스레드 수
tr '\0' ' ' < /proc/1234/cmdline            # 실행 명령줄
cat /proc/loadavg                           # 0.52 0.61 0.58 1/180 12345
head -n 3 /proc/meminfo

ps·top·free 가 전부 이 파일들을 읽어 보여 주는 것입니다. 최소 설치 컨테이너에서 도구가 없을 때 유용합니다.

핵심 원리
  • 2.1 ps
  • 2.2 ps 열 읽기
  • 2.3 pgrep·pkill·kill
  • 2.4 top 키
  • 2.5 top 상단 읽기
  • 2.6 free
  • 2.7 vmstat 과 iostat
  • 2.8 df 와 du
  • 2.9 lsof 와 ss
  • 2.10 nice 와 renice
  • 2.11 백그라운드 작업
  • 2.12 /proc 직접 읽기
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제