[Linux 프로그램 관리] 3. $ ps 명령어 이용하여 프로세스 상태 표시하기
반갑습니다!
이번 포스트에서는 $ 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 | 메모리 제한 |