• [리눅스 기초]프로세스 확인하기(ps, top)

    2021. 5. 3.

    by. 웰시코더

    반응형

    -리눅스의 프로세스를 확인하는 명령어와 옵션들을 살펴본다.

    -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다.

    -ubuntu 12.10을 사용하였다.


     실행중인 프로그램을 '프로세스'라고 한다. 프로세스를 보기 위한 명령어는 ps와 top가 있다. ps와 top 명령어의 차이가 어떤건지 헷깔렸는데 KLDP에 잘 정리가 된 댓글이 있었다.(출처는 글 마지막에 명시)

    • top : 그때 그때의 cpu 사용률.
    • ps : 프로세스 전체 사용시간 동안의 cpu 사용률

     top은 모니터링 툴, ps 는 스냅샷이라고 비유했다. 또 다른 블로그들에 공통적으로 정리된 차이점이 있는데,

    • ps는 ps한 시점에 proc에서 검색한 cpu 사용량
    • top은 proc에서 일정 주기로 합산해 cpu 사용율 출력

    라고 정리되어 있다. 여기서 proc이 process를 그냥 줄여말한건가...싶어서 혹시나 해서 찾아봤는데 proc이라는 것(?)이 실제로 존재했다.

    • proc : /proc 디렉토리에는 실행중인 프로세스 정보, CPU, 메모리 등 시스템 정보가 들어 있다. 리눅스 부팅시 커널이 메모리 상에 가상으로 만들어놓은 파일시스템이다.

     cd /proc에 들어간 후 ls -al 명령어로 디렉토리를 확인해보면 숫자들로 되어 있는데 이것이 프로세스 식별자(PID)이다. 일단 이정도만 알고 넘어가자. 즉 ps는 ps명령어를 친 시점에서 proc이라는 가상 파일시스템을 검색한 결과이며, top는 proc에서 일정주기로 체크한 결과를 보여준다고 이해하면 될 것 같다. 실제로 top는 CPU 점유율 등이 5초 정도마다 동적으로 바뀐다.

     

    PS 명령어와 옵션

     ps명령어는 활용하는 옵션 조합이 굉장히 많은 것 같다. 블로그마다도 여러가지 옵션 조합들을 올려놨는데 가장 많이 쓰이는 옵션이 aux와 -ef로 보인다. ps aux와 ps -ef 모두 프로세스를 디테일하게 보여주는 옵션이다. ps -f와 ps u는 보여주는 필드를 정하는데 약간의 차이가 있다. 

     

    ps -f는 PID(프로세스 식별자)와 PPID(부모 프로세스 식별자)를 같이 보여주기 때문에 프로세스 관계 파악에 더 용이하다. 반면 ps u는 프로세스의 상태 정보(CPU사용율, 메모리 사용율, 프로세스 상태 등)를 더 많이 보여준다. 상태를 중점으로 보는 용도로는 ps aux를 사용하는 것이 더 적당하다고 한다.

     

    ps aux 검색 결과

     ps aux의 상태들의 설명은 다음과 같다.

    • %CPU : CPU 사용율
    • %MEM : 메모리 사용율
    • VSZ : 가상 메모리 크기
    • RSS : 실제 메모리 크기
    • STAT : 프로세스 상태

     또한 ps aux와 ps -ef는 모든 프로세스를 보여주기 때문에 특정 프로세스의 정보를 선별적으로 확인하려면 파이프라인과 grep 명령어를 같이 사용하면 좋다.

    • ps aux | grep '프로세스명' : ps aux로 모든 프로세스를 출력한 후, grep 명령어로 프로세스명에 맞는 프로세스를 선별하여 보여준다.(ps -ef | grep '프로세스명'도 동일)

    cron이라는 프로세스명이 있는지 파이프라인과 grep을 사용하여 검색한 결과

    TOP 

     실시간으로 시스템의 상태 및 프로세스를 모니터링하여 보여준다. TOP는 실행 중에 스페이스바를 누르면 실시간으로 화면이 갱신된다. 예전에 첫 프로젝트 때 선배가 TOP명령어 입력 후 스페이스 누르며 프로세스를 확인하라고 했었던 것이 기억난다(TMI..)

     

    top 명령어를 실행하면 위와 같은 화면을 확인 가능

     명령어 실행하면 확인가능한 것들이 너무 많은데..어차피 실제로 자주 사용하지 않는 이상은 분명 까먹을터이니 정리된 블로그를 참고하여 전체적으로 파악만 해봤다. 우선 회색으로 칠해진 프로세스 상태 정보(PID USER..라고 되있는 부분)를 기준으로 위, 아래로 나눌 수 있다. 위가 시스템 정보, 아래가 프로세스 정보이다. 시스템 정보부터 간단히 살펴보면 다음과 같다.

    • top - 22:34:18 up 57 min : 현재 서버 시간
    • 1 user : 접속 유저의 수?
    • load average : 현재 시스템이 일을 얼마나 하고 있는지 1,5,15분 단위로 프로세스 수를 나타내고 있다.
    • Tasks : 프로세스 개수(72개인 것을 확인 가능)
    • CPU
      • %us : 유저 레벨에서 사용하는 CPU 비중
      • %sy : 시스템 레벨에서 사용하는 CPU 비중
      • %id : 유휴 상태의 CPU 비중
      • %wa : 시스템이 I/O 요청을 처리하지 못한 상태의 CPU 비중 
    • KiB Mem, Swap : 메모리 상태 정보

    프로세스 정보를 살펴보면 다음과 같다.

    • PID : 프로세스 ID
    • USER : 프로세스를 실행시킨 사용자 ID
    • PR : 프로세스 우선 순위(Priority)
    • NI : NICE 값. 마이너스(-)가 우선순위가 높다.
    • VIRT : 가상 메모리의 사용량(virtual?)
    • RES : 현재 페이지가 상주하고 있는 크기
    • SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합(이해 안 되는 부분)
    • S : 프로세스의 상태 - S(sleeping) / R(running) / W(swapped out process) / Z(zombies) 
    • %CPU : 프로세스가 사용하는 CPU 사용율
    • %MEM : 프로세스가 사용하는 메모리 사용율
    • COMMAND : 실행된 명령어

     

    TOP로 진입 후 사용가능한 명령어를 몇 가지만 정리해봤다.

    • 스페이스바 : 화면을 갱신한다.
    • Z : 화면의 출력 색상을 변경할 수 있다. 1,2,3을 눌러보며 원하는 색을 맞춘 후 enter를 누르면 TOP 결과의 텍스트 컬러가 바뀌어 있다.
    • z : 변경 색상 전과 후를 선택할 수 있다.
    • q : top를 종료한다.

     그밖에도 TOP 이외에 HTOP이라는 좀 더 시각적으로 디테일하게 TOP 결과를 보여주는 프로그램이 있는데, 따로 설치해서 사용해야 한다. apt-get install htop로 설치 가능하다.

     

    출처 : unipro.tistory.com/238, kldp.org/node/153790, kldp.org/node/153790, dany-it.tistory.com/348

    반응형

    댓글