Linux/프로그램 관리하기

[Linux 프로그램 관리] 3. $ ps 명령어 이용하여 프로세스 상태 표시하기

Fletcher 2024. 8. 13. 12:00

 

반갑습니다!

이번 포스트에서는 $ ps 명령어를 이용하여 프로세스 상태를 표시해보겠습니다 ^^

 

지금까지는 실행 중인 프로그램을 관리하는 방법으로

$ job 명령어와 작업 번호를 이용했습니다

 

하지만 작업 번호는 셸마다 독립적으로 관리하므로

다른 셸 터미널에서는 사용이 불가능합니다 ^^;;

 

실행 중인 프로그램을 어떤 셸에서 실행했는지에 관계없이

모든 셸에서 조작하려면 프로세스 ID가 필요합니다

프로세스 ID는 오늘 살펴볼 $ ps 명령어로 확인할 수 있습니다 ^^!

 

 

 

 

1. 프로세스 상태 표시하기 : $ ps

 

예시 이미지와 같이 $ ps 명령어를 프롬프트에 입력하면

프로세스 상태가 터미널에 출력됩니다 ^^

 

표시되는 프로세스 정보는 실행 중인 프로세스 상태에 따라 달라집니다

위 이미지에서 PID는 프로세스 ID를 뜻하고, TTY는 프로세스가 실행된 터미널,

TIME은 CPU 시간, CMD는 실행한 명령어를 나타냅니다 ^^

 

 

 

특정 명령어의 프로세스 ID를 조사할 때 $ ps 명령어에 a, u, x, w라는 네 가지의 옵션을 지정해서,

문자열을 검색할 때 사용하는 grep 명령어와 함께 응용하여 이용합니다 ^^

예시 이미지를 한 번 보시겠습니다!

 

위 명령어는 |(파이프)를 이용하여 두 명령어를 합친 형태입니다

$ ps aux의 명령 결과인 표준 출력을

$ grep docker라는 명령의 표준 입력으로 넣어줬습니다

 

즉 현재 실행중인 프로세스 출력 결과 중에서

docker라는 문자열이 포함된 부분을 조회해서 나타내라는 의미입니다 ^^

 

조회된 정보 중 왼쪽에서 두 번째에 위치한 숫자 부분이 바로 프로세스 ID가 되겠습니다

 

프로세스가 생성 된 후 응답 불능에 빠졌다면,

위와 같이 ps 명령어와 grep 명령어를 조합하여

해당 프로세스ID를 찾은 다음에 $ kill 명령어로 프로세스를 종료시키면 되겠습니다 ^^

 

 

해당 명령어의 주요 옵션은 다음과 같습니다

주요 옵션
u 사용자명과 시작 시각 등을 표시합니다
a 모든 사용자의 프로세스 정보를 표시합니다
x 제어 터미널이 없는 프로세스 정보(데몬 등)를 표시합니다
l 더 상세한 정보를 표시합니다
f 프로세스의 부모 자식 관계를 트리 형태로 표시합니다
w 프로세스 정보 표시 내용을 늘립니다
j 부모 프로세스, 프로세스 그룹 같은 정보를 표시합니다
m 스레드를 표시합니다
ttty tty 터미널이 제어하는 프로세스만 표시합니다
U user user 사용자가 실행한 프로세스만 표시합니다

 

 

 

 

해당 명령어의 주요 표시 항목은 다음과 같습니다

주요 표시 항목
USER 사용자명
UID 사용자 ID
PID 프로세스 ID
PPID 부모 프로세스 ID
TT, TTY 제어 터미널
STAT 프로세스 상태 보조 정보
R 실행 가능 상태 < 우선 순위가 높은 프로세스
S 슬립 상태 N 우선 순위가 낮은 프로세스
D 디스크 내부 L 메모리 내에 락lock이 걸린 페이지가 있음
T 정지 상태 s 섹션 리더
Z 좀비 상태 l 멀티 스레드
TIME CPU 시간
COMMAND, CMD 명령어
%CPU CPU 이용률
%MEM 메모리 이용률
SIZE 가상 이미지 크기(text + data + stack)
RSS 실제 메모리(내재 세트) 크기
START 시작 시각
FLAGS 플래그
NI 프로세스 우선 순위(nice 값)
WCHAN 프로세스가 대기 상태일 때 커널 함수명
PAGEIN 페이지 폴트page fault 횟수
TSIZ 텍스트 크기
DSIZ 데이터 크기
LIM 메모리 제한