프로세스·자원 (ps·top·free·df)
3. 코드 예제
예제 1: ps 와 정렬 — 01_resource.sh 명령 목록
ps aux --sort=-%mem | head -n 4
ps -o pid,ppid,%cpu,%mem,etime,cmd -p 1234USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
myapp 1234 12.3 31.2 4823400 2498120 ? Sl 09:00 45:12 /usr/bin/java -Xmx2g -jar app.jar
oracle 2201 2.1 18.7 3120000 1498000 ? Ss Sep01 120:05 ora_pmon_ORCL
root 980 0.0 0.4 180000 32000 ? Ss Sep01 1:02 /usr/sbin/sshd
PID PPID %CPU %MEM ELAPSED CMD
1234 1 12.3 31.2 8:20:11 /usr/bin/java -Xmx2g -jar app.jar리눅스 서버 예시입니다. RSS 2.4GB 가 자바 프로세스의 실제 메모리이고 ELAPSED 8시간이 재시작 이후 경과입니다.
예제 2: 찾기와 종료 — 01_resource.sh 발췌
sleep 200 & S1=$!
ps -ef | grep -c '[s]leep'
kill "$S1"; sleep 1
kill -0 "$S1" 2>/dev/null && echo "살아 있음" || echo "종료됨"sleep 프로세스 수: 2
S1 종료됨 (kill 기본 TERM)grep '[s]leep' 트릭으로 grep 자신을 제외했습니다. kill -0 은 신호를 보내지 않고 존재만 확인합니다.
예제 3: top 한 화면 — 명령 목록
top -b -n 1 | head -n 12top - 17:20:01 up 30 days, 2:15, 2 users, load average: 0.52, 0.61, 0.58
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.0 us, 3.0 sy, 0.0 ni, 84.0 id, 1.0 wa, 0.0 hi, 0.0 si
MiB Mem : 7821.0 total, 1205.0 free, 2410.0 used, 4206.0 buff/cache
MiB Swap: 2047.0 total, 2047.0 free, 0.0 used. 4980.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 myapp 20 0 4823400 2.4g 18000 S 12.3 31.2 45:12.30 java8코어 서버에서 load 0.5, wa 1%, avail 5GB 이면 정상입니다. %CPU 12 는 코어 하나의 12% 입니다.
예제 4: 백그라운드 작업 — 01_resource.sh 발췌
nice -n 10 sleep 1 && echo "nice 10 으로 실행"
sleep 100 & J=$!
jobs | head -n 1
kill %1nice 10 으로 실행 (숫자 클수록 양보)
[1]+ Running sleep 100 &
[1] Terminated sleep 100jobs 의 [1] 이 작업 번호이고 kill %1 로 PID 없이 종료했습니다.