홈 › 리눅스 명령어 › 05 / 10

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

섹션 7진행 0 / 10

4. 응용 변형 예제

4.1 느린 서버 30초 점검

bash
uptime
top -b -n 1 | head -n 5
ps aux --sort=-%cpu | head -n 4
free -m | awk 'NR==2{print "avail MB:", $7}'
df -h | awk '$5+0 > 85'

load, CPU 구성, 상위 프로세스, 여유 메모리, 찬 디스크 다섯 가지를 한 번에 봅니다. 08 셸 활용 레슨에서 이것을 함수로 만듭니다.

4.2 메모리 상위 프로세스와 RSS 합계

bash
ps aux --sort=-rss | awk 'NR<=6{printf "%-8s %6.0f MB %s\n", $1, $6/1024, $11}'
ps -u myapp -o rss= | awk '{s+=$1} END{print s/1024 " MB"}'

첫 줄은 상위 5개를 MB 로, 둘째 줄은 한 사용자의 모든 프로세스 합계입니다.

4.3 좀비 찾기

bash
ps -eo pid,ppid,stat,cmd | awk '$3 ~ /Z/'

좀비는 부모가 wait 하지 않은 것이라 부모를 재시작해야 사라집니다. 수십 개면 그 부모 프로그램의 버그입니다.

4.4 디스크 I/O 범인

bash
iostat -x 1 3 | grep -E 'Device|sd'
pidstat -d 1 3               # 프로세스별 읽기·쓰기 KB/s

%util 이 90% 를 넘는 디스크와 pidstat -d 의 상위 프로세스가 짝입니다. 대개 로그 폭주나 배치의 대량 쓰기입니다.

4.5 오래 도는 프로세스

bash
ps -eo pid,etimes,cmd --sort=-etimes | head -n 5
ps -eo pid,etime,cmd | grep '[b]ackup.sh'

etimes 는 초 단위 경과입니다. 매일 돌아야 할 배치가 어제 것부터 아직 돌고 있는지 확인할 때 씁니다.