프로세스 VS 바이너리
* 코드 이미지 또는 바이너리 : 실행파일
* 실행 중인 프로그램 : 프로세스
- 가상 메모리 및 물리 메모리 정보
- 시스템 리소스 관련 정보
- 스케쥴링 단위
리눅스는 다양한 프로세스 실행 환경
* 리눅스는 기본적으로 다양한 프로세스가 실행됨
- 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델
foreground process / background process
* foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종류까지 사용자가 다른 입력을 하지 못하는 프로세스
* background process : 사용자 입력과 상관이 실행되는 프로세스
- 쉘(shell)에서 해당 프로세스 실행 시, 맨 뒤에 &를 붙여줌
- 사용 예
# find / -name '*.py' > list.txt &
[1] 57
- [1]은 작 번호 (job number), 57은 pid(process ID)를 나타냄
foreground process 제어하기
* [CTRL] + z : foreground 프로세스를 실행 지 상태 (suspend 모드)로 변경
* 맨 마지막 [CTRL] + z로 중지된 프로세스는 bg 명령으로 background 프로세스로 실행될 수 있음
* jobs 명령어 : 백그라운드로 진행 또는 중지된 상태로 있는 프로세스를 보여줌
* [CTRL] + c : 프로세스 작업 취소 (해당 프로세스는 완전히 종료됩니다.)
운영체제 소프트웨어 인럽트가 해당 프로세스에 보내짐 - 그래서 프로세스 제어가 가능한다
프로세스 상태 확인 -ps 명령어
* 사용법 : ps [option(s)]
* option(s)
- a : 시스템을 사용하는 모든 사용자의 프로세스 출력
(보통 aux와 같이 u, x 옵션과 함께 사용)
- u : 프로세스 소유자에 대한 상세 정보 출력
- l : 프로세스 관련 상세 정보 출력
- x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들도 출력함
주로 데몬 프로세스(daemon process)까지 확인하기 위해 사용
본래 ps 명령은 현재 쉘(shell)에서 실행한 프로세스들만 보여주기 때문에
이 옵션을 사용하는 경우가 많음
- e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력
- f : 프로세스 간 관계 정보도 출력
* 데폰 프로세스 (daemon process)
- daemon은 악마를 의미한다
- 사용자 모르게 시스템 관리를 위해 실행되는 프로세스로 보통 시스템이 부팅될 때 자동 실행 (예 : ftpd, inetd 등)
* 주요 ps 출력 정보 항목
프로세스 중지시키기
* kill 명령어
- 사용법
- kill % 작업 번호 (job number)
- kill 프로세스 ID (pid)
- 작업 강제 종료 옵션 -9
- 예 : # kill -9 57
주로 사용하는 프로세스 명령 (적어도 이 명령은 편하게 사용해야 함)
* ps aux | grep 프로세스명 : 프로세스가 실행 중인지를 확인하고, 관련 프로세스에 대한 정보 출력
* kill -9 프로세스 ID (pid) : 해당 프로세스를 강제로 죽임
* 명령 & : 터미널에서 다른 작업을 해야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 background로 실행
* [CTRL] + z : 프로세스 중지
* [CTRL] + c : 프로세스 종료 (실행 취소)
※ 정리
* foreground process / background process
* process 제어하시 -&, [CTRL] + z, [CTRL] + c, jobs, bg, kill
* 프로세스 상태 확인 -ps
출처 : 제로베이스
'공부 Note > 시스템 프로그래밍' 카테고리의 다른 글
Chapter 04 시스템 프로그래밍 (1) (0) | 2022.02.07 |
---|---|
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (5) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (3) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (2) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (1) (0) | 2022.02.07 |