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

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

섹션 7진행 0 / 10

3. 코드 예제

예제 1: ps 와 정렬 — 01_resource.sh 명령 목록

bash
ps aux --sort=-%mem | head -n 4
ps -o pid,ppid,%cpu,%mem,etime,cmd -p 1234
text
USER   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 발췌

bash
sleep 200 & S1=$!
ps -ef | grep -c '[s]leep'
kill "$S1"; sleep 1
kill -0 "$S1" 2>/dev/null && echo "살아 있음" || echo "종료됨"
text
sleep 프로세스 수: 2
S1 종료됨 (kill 기본 TERM)

grep '[s]leep' 트릭으로 grep 자신을 제외했습니다. kill -0 은 신호를 보내지 않고 존재만 확인합니다.

예제 3: top 한 화면 — 명령 목록

bash
top -b -n 1 | head -n 12
text
top - 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 java

8코어 서버에서 load 0.5, wa 1%, avail 5GB 이면 정상입니다. %CPU 12 는 코어 하나의 12% 입니다.

예제 4: 백그라운드 작업 — 01_resource.sh 발췌

bash
nice -n 10 sleep 1 && echo "nice 10 으로 실행"
sleep 100 & J=$!
jobs | head -n 1
kill %1
text
nice 10 으로 실행 (숫자 클수록 양보)
[1]+  Running                 sleep 100 &
[1]   Terminated              sleep 100

jobs 의 [1] 이 작업 번호이고 kill %1 로 PID 없이 종료했습니다.