메모리에 로드되어 실행 중인 프로그램을 프로세스라고 한다. 예를 들어 Linux에서 명령어가 실행(ls
, pwd
등등)될 때마다 새 프로세스가 생성되고 시작된다.
실행 중인 모든 프로세스를 조회한다. 명령과 함께 사용할 수 있는 다양한 옵션이 있다. 옵션 없이 명령 사용 시 현재 사용하는 쉘/터미널에 관련된 프로세스만을 보여준다.
아래와 같이 명령어를 사용한다.
# 현재 쉘/터미널 관련 프로세스
ps
# 현재 쉘/터미널 관련 프로세스의 상세정보 표시
ps -f
# 특정 사용자의 프로세스에 대한 확장된 정보 표시
ps -u <user-name>
# 메모리 상 존재하는 모든 프로세스 정보 표시
ps -e
옵션 없음
:-f
: 프로세스의 상세 정보를 표시한다.
-u <user-name>
: 특정 사용자의 프로세스에 대한 확장된 정보를 표시한다. user-name
을 입력하지 않을 경우 터미널에 로그인된 사용자로 지정된다.-e
: 메모리 상 존재하는 모든 프로세스 정보를 표시한다.
USER
,UID
: 프로세스 실행 사용자 ID
PID
: 프로세스 ID
PPID
: 상위 프로세스 ID
- 터미널에서 ps
명령어를 입력하여 실행했기 때문에 ps
프로세스의 부모 프로세스는 터미널 프로세스인 bash
가 된다.
%CPU
: 프로세스의 CPU 사용량
%MEM
: 프로세스의 메모리 사용량
VSZ
: 프로세스의 가상 메모리 크기
RSS
: 프로세스의 실제 메모리 크기
STAT
: 프로세스의 상태
START
, STIME
: 프로세스 시작 시간
TTY
: 프로세스와 실행된 터미널 유형
TIME
: CPU에 의해 처리된 누적시간
CMD
, COMMAND
: 프로세스 실행 명령
동작 중인 프로세스에 시그널을 전달한다. 여기서 기본 시그널값은 15번 SIGTERM으로, 보통 프로세스를 강제 종료할 때 사용한다. kill -l
명령어를 사용하여 시그널 목록을 확인할 수 있다. 아래와 같이 총 64개의 시그널이 있다.
아래와 같이 명령어를 사용한다.
# 프로세스를 종료한다.
kill <PID>
-[n]
: n
에 프로세스에 전달할 시그널 번호를 넣어 사용한다. 예시로, 옵션 없이 명령어를 실행했는데도 종료되지 않을 경우 다음과 같이 9
시그널 번호를 사용하여 강제 종료시킬 수 있다.
kill -9 <PID>
예시로 PID가 4382인 sleep 프로세스를 -[n]
옵션으로 9
번 시그널을 전달하여 강제종료시켰다. ps
명령어를 통해 프로세스가 종료되었음을 확인할 수 있다.
좀 더 자세한 시그널 정보가 필요하다면 아래 명령어를 입력하여 문서에서 자세하게 볼 수 있다.
man 7 signal
동작 중인 프로세스에 대한 우선순위를 재조정한다. 재조정 값은 -20~19 사이에 있고 -값이 우선순위가 높다.
아래와 같이 사용한다.
# 프로세스의 우선순위를 조정한다.
renice [우선순위 값] [PID]
프로세스 정보를 실시간 모니터링할 수 있다. 다음과 같이 명령어를 사용한다.
top
명령어를 실행하게 되면 다음과 같이 실시간 프로세스 정보를 출력하는 고정된 화면으로 진입한다.
PID
: 프로세스 ID
USER
: 프로세스 실행 사용자 ID
PR
: 프로세스 우선순위, Priority
NI
: 우선순위 조정값, niceness 로, renice
명령을 통해 우선순위를 변경할 수 있다. (-(마이너스)값이 클 수록 우선순위가 높다)
VIRT
: 프로세스에 의해 사용되는 가상메모리 (Virtual image)
RES
: 프로세스에 의해 사용되는 물리적 메모리 (Resident Size)
SHR
: 프로세스에 의해 사용되는 공유 메모리 (Shared memory size)
S
: 프로세스 상태
- Z
: zombie
- T
: traced or stopped
- S
: sleep
- R
: running
- D
: uninterruptable sleep
- I
: idle (커널 스레드 대기중이며 활성화되지 않음)
%CPU
: CPU 사용률
%MEM
: 메모리 사용률
TIME+
: 프로세스 실행 이후 사용된 CPU 사용시간 (1/100초 단위)
CMD
: 프로세스 실행 명령
https://m.blog.naver.com/sunguru/220744744609
https://www.geeksforgeeks.org/processes-in-linuxunix/?ref=lbp