300x250
목차
GPU의 메모리가 비정상적으로 차 있다거나, 어떤 프로세스를 강제로 종료시켜야 할 때가 있다. 이때 유용하게 사용할 수 있는 명령어를 살펴보자.
프로세스 상태 출력 관련 명령어 (ps)
먼저, 프로세스 상태를 확인하는 ps 명령어부터 알아보자. 프로세스 전체를 출력하면 너무 많으므로, grep과 함께 사용하여 특정 프로게그만 확인해볼 수 있다.
ps -ef | grep [특정프로세스]
- -e : 모든 프로세스를 출력한다.
- -f : 유닉스 스타일로 출력한다.
각 항목은 다음을 의미한다.
- 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)를 출력한다.
상태(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]
-ef 옵션으로 jupyter 관련 프로세스를, -aux 옵션으로 python 관련 프로세스를 띄워보았다. 두 옵션 모두 두번째 열이 PID이다. 예를 들어, ps -ef에서 네 번째 ipykernel을 종료하고 싶으면 터미널에 'kill -9 199688'을 입력하면 된다.
728x90
최근댓글