프로세스 (process)
정의
“하드디스크에 저장된 실행 코드(프로그램)가 메모리에 로딩되어 활성화된 것”
실행 중인 프로그램 또는 작업 단위를 의미하기도 함
프로세스는 프로그램이 메모리에서 실행되며, 각 프로세스는 고유한 **프로세스 ID(PID)**를 가집니다.
포그라운드(Foreground) 프로세스
화면에 나타나 사용자와 상호 작용하는 프로세스
화면에 출력되며, 사용자의 입력을 받아들이고 사용자와의 상호 작용을 통해 작업을 수행
백그라운드 (Background) 프로세스
사용자와의 직접적인 상호 작용 없이 실행되는 프로세스
주로 긴 작업을 수행하거나 백엔드에서 실행되는 서비스 형태의 프로그램에 사용
화면에 출력되지 않으며, 사용자 입력을 기다리지 않고 동작
특징
프로세스는 시스템 자원(CPU, 메모리 등)을 사용합니다.
부모 프로세스와 자식 프로세스 관계를 가질 수 있습니다.
프로세스는 실행 상태(실행 중, 대기 중, 종료된 등)에 따라 변화합니다.
- 모든 프로세스는 혼자서 독립적으로 실행되는 것이 아닌 부모 프로세스의 하위에 종속되어 실행된다.
예를 들어 Firefox는 X 윈도 프로세스가 구동된 상태에서 실행되어야 하므로 X 윈도는 Firefox의 부모 프로세스, Firefox는 X 윈도의 자식 프로세스
관련 명령어
ps # 현재 실행 중인 프로세스 확인 top # 실시간으로 프로세스와 시스템 자원 사용 확인 htop # top의 인터페이스를 개선한 도구 kill # 특정 프로세스 종료 pkill # 이름 기반으로 프로세스 종료 pstree # 부모. 자식 프로세스의 관계를 트리의 형태로 보여줌
예제
# 현재 사용자의 프로세스 확인 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