300x250

 

목차

     

    GPU의 메모리가 비정상적으로 차 있다거나, 어떤 프로세스를 강제로 종료시켜야 할 때가 있다. 이때 유용하게 사용할 수 있는 명령어를 살펴보자.

     

     

     

    프로세스 상태 출력 관련 명령어 (ps)

     

    먼저, 프로세스 상태를 확인하는 ps 명령어부터 알아보자. 프로세스 전체를 출력하면 너무 많으므로, grep과 함께 사용하여 특정 프로게그만 확인해볼 수 있다.

    ps -ef | grep [특정프로세스]
    • -e : 모든 프로세스를 출력한다.
    • -f : 유닉스 스타일로 출력한다.

     

    Fig 1. ps -ef example

     

    각 항목은 다음을 의미한다.

    • UID : 소유자
    • PID : 식별 번호
    • PPID : 부모 프로세스의 PID
    • C : 프로세스의 CPU 점유 상태
    • STIME : 프로세스 시작 시간
    • TTY : 프로세스가 시작된 터미널
    • TIME : 총 사용 시간
    • COMMAND : 프로세스를 실행한 명령어(행)

     

    또는 -aux 옵션을 활용해볼 수 있다. (-는 붙여야 하는 경우도 있고, 안붙여야 하는 경우도 있다는데, 내가 사용하는 ubuntu 20.04 LTS 기준에서는 둘 다 실행된다.)

    ps -aux | grep [특정프로세스]
    • (-)a : 터미널에 종속되지 않은 모든 프로세스를 출력한다. (-A : 모든 프로세스를 출력한다.)
    • (-)u : 프로세스 소유자 (User 또는 UID)를 기준으로 출력한다.
    • (-)x : 프로세스의 상태(STAT)를 출력한다.

     

    Fig 2. ps -aux example

     

    상태(STAT)는 다음과 같이 나타난다.

    • S : 인터럽트 가능한 대기상태
    • I (대문자 i) : 커널 쓰레드 유휴 상태
    • R : 실행 중 또는 실행 가능 상태
    • T : 작업 제어신호에 의해 멈춘 상태
    • t : 디버거에 의해 멈춘 상태
    • X : 죽은 프로세스 (안보이는 게 정상)
    • Z : 좀비(defunct 상태) 프로세스
      • 실행이 종료되었으나 삭제되지 않은 프로세스
    • L : 락(lock)된 메모리를 갖는 페이지
    • s : 세션 리더
    • < : 높은 우선 순위
    • N : 낮은 우선 순위
    • l (소문자 L) : 멀티 쓰레드

     

     

     

     

    프로세스 (강제)종료 관련 명령어 (kill)

     

    비정상적으로 작동하는 프로세스가 있다면 kill 명령어로 강제 종료할 수 있다.

    이때 시그널(일반적인 리눅스 명령어의 옵션 개념)로 9를 주는데, 9가 강제 종료이고, 9를 주지 않으면 default값인 15로, 프로세스와 관련된 파일을 정리한 후에 종료한다. 15인 경우 종료되지 않는 프로세스가 남아있을 수 있다.

    kill -9 [PID]

     

    Fig 3. ps examples with grep

     

    -ef 옵션으로 jupyter 관련 프로세스를, -aux 옵션으로 python 관련 프로세스를 띄워보았다. 두 옵션 모두 두번째 열이 PID이다. 예를 들어, ps -ef에서 네 번째 ipykernel을 종료하고 싶으면 터미널에 'kill -9 199688'을 입력하면 된다.

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기