Linear Algebra
🏎️

8. 프로세스 제어하기

생성일
2022/02/03 03:42
태그
Process
CPU usage
Memory usage

프로세스란?

실행중인 프로그램을 의미한다.일반적으로 사용자가 컴퓨터에서 실행시키기 위해 작성한 프로그램과 이 프로그램의 실행에 필요한 입력 데이터를 묶어서 작업이라고 하는데, 이러한 작업이 컴퓨터 시스템에 의해 실행되어 운영체제(커널)에서 이 사실이 전해지면 이 작업이 커널에 등록되고 이렇게 등록된 작업을 이제부터 프로세스라 부른다.
즉, 커널에 등록되고 커널의 관리하에 있는 작업이 되면 프로세스이다.

프로세스의 종류

부모 프로세스
다른 프로세스를 생성할 수 있는 프로세스
자식 프로세스
부모 프로세스로부터 만들어지는 프로세스 정상적으로 자식프로세스 종료 후 부모프로세스 종료
데몬 프로세스
일반적으로 사용자가 실행시키지 않고 커널에 의해 구동, 백그라운드로 동작한다. 특정 서비스를 제공하기 위해 구동 (WIndows에서 서비스의 존재)
고아 프로세스
일반적으로 자식프로세스는 종료되면 부모 프로세스로 되돌아 가는데 부모 프로세스가 먼저 종료된 경우에 자식 프로세스를 고아 프로세스라고 한다. 고아 프로세스는 init 프로세스가 처리해준다. (요즘은 systemd로 대체되었다.)
좀비 프로세스
정상적으로 프로세스를 종료했지만 자원을 반납하지 않은 상태로 계속 남아있는 상태. 자원을 점유한 상태에서 동작하지 않는 프로세스

ps 명령어 : 원도우의 작업관리자의 역할을 한다.

-e : 시스템 상의 모든 프로세스 정보를 출력
-f : 상세한 정보 출력
일반적으로 ps -ef 명령어를 많이 사용한다. 이에 따른 결과는 다음과 같이 출력된다.
UID
프로세스 소유자 ID
PID
프로세스 ID
PPID
부모 프로세스 ID
C
스케쥴링을 위한 CPU 사용량, 별로 의미 없는 필드
STIME
프로세스 시작 시간
TTY
장치 번호 (터미널에서 실행된 프로세스가 아닌것들)
TIME
프로세스에 대한 누적 실행 시간
CMD
명령 옵션 + 아규먼트(Argument)
ps -ef | grep [알고싶은 것(이름, pid ..)] : 알고싶은것에 대한 결과값만 나온다.
pstree : 트리 형태로 프로세스 표현
top : cpu 사용량 / 메모리 사용량 을 확인 가능하다 (q 눌러서 종료)

프로세스 제어 명령어

시그널은 프로세스를 제어하기 위해서 프로세스에게 전달하는 신호값이다.
1
SIGHUP(Sig Hang Up) 프로세스 종료 없이 프로그램을 새로 초기화
2
SIGINT , INTERRUPT, Ctrl + C 명령어 실행 중 중단 명령어
3
SIGKILL, kill, 무시할 수 없는 종료(Strongest)
4
SIGTERM, terminate, 무시할 수 있는 종료
kill : PID로 프로세스를 제어
ex) kill -9 [PID]
pkill : 프로세스 이름으로 제어
입력된 이름에 해당하는 프로세스 모두 down 가능하다.
ppid 0 : os 커널

Reference