Ubuntu – Process 프로세스
프로세스 (process)
정의
"하드디스크에 저장된 실행 코드(프로그램)가 메모리에 로딩되어 활성화된 것"
실행 중인 프로그램 또는 작업 단위를 의미하기도 함
프로세스는 프로그램이 메모리에서 실행되며, 각 프로세스는 고유한 프로세스 ID(PID)를 가집니다.
포그라운드(Foreground) 프로세스
화면에 나타나 사용자와 상호 작용하는 프로세스
화면에 출력되며, 사용자의 입력을 받아들이고 사용자와의 상호 작용을 통해 작업을 수행
백그라운드 (Background) 프로세스
사용자와의 직접적인 상호 작용 없이 실행되는 프로세스
주로 긴 작업을 수행하거나 백엔드에서 실행되는 서비스 형태의 프로그램에 사용
화면에 출력되지 않으며, 사용자 입력을 기다리지 않고 동작
특징
프로세스는 시스템 자원(CPU, 메모리 등)을 사용합니다.
부모 프로세스와 자식 프로세스 관계를 가질 수 있습니다.
프로세스는 실행 상태(실행 중, 대기 중, 종료된 등)에 따라 변화합니다.
- 모든 프로세스는 혼자서 독립적으로 실행되는 것이 아닌 부모 프로세스의 하위에 종속되어 실행된다. 예를 들어 Firefox는 X 윈도 프로세스가 구동된 상태에서 실행되어야 하므로 X 윈도는 Firefox의 부모 프로세스, Firefox는 X 윈도의 자식 프로세스
관련 명령어
bash
ps # 현재 실행 중인 프로세스 확인
top # 실시간으로 프로세스와 시스템 자원 사용 확인
htop # top의 인터페이스를 개선한 도구
kill # 특정 프로세스 종료
pkill # 이름 기반으로 프로세스 종료
pstree # 부모. 자식 프로세스의 관계를 트리의 형태로 보여줌
예제
bash
# 현재 사용자의 프로세스 확인
ps
# 시스템의 모든 프로세스 상세 정보 확인
ps aux
# 특정 프로세스 검색 (grep 활용)
ps aux | grep nginx
# 특정 사용자의 프로세스 확인
ps -u root
# 모든 프로세스의 전체 형식 정보 확인
ps -ef
# 특정 프로세스 ID의 정보 확인
ps -p 1234
# 전체 형식으로 특정 프로세스 ID의 정보 확인
ps -f -p 1234
# 프로세스 계층 구조를 트리 형태로 표시
ps -e --forest
# CPU 사용률에 따라 정렬하여 표시
ps -e --sort=-%cpu
# 특정 터미널에서 실행 중인 프로세스 확인
ps -t tty1
# 특정 그룹의 프로세스 확인
ps -G staff
# 특정 프로세스의 쓰레드 정보 표시
ps -L -p 1234
# 작업 제어 형식으로 프로세스 표시
ps -j
# 특정 형식으로 출력
ps -o pid,uname,comm
# 실시간으로 프로세스와 시스템 자원 사용 확인
top
# top의 인터페이스를 개선한 도구
htop
# 특정 프로세스 종료
kill -9 1234
# 이름 기반으로 프로세스 종료
pkill nginx
# 부모, 자식 프로세스의 관계를 트리 형태로 표시
pstree
# 현재 터미널에서 실행 중인 백그라운드 작업 확인
jobs
# 현재 터미널에서 실행 중인 프로세스를 foreground로 전환
fg %1
# 현재 터미널에서 실행 중인 프로세스를 background로 전환
bg %1