학교수업/리눅스 시스템

리눅스 시스템 7주차

메카인 2023. 1. 31. 19:13

프로세스

현재 시스템에서 실행 중인 프로그램

리눅스에서 모든 프로세스는 부모 자식 관계를 가지고 있다.

자식 프로세스는 할 일이 끝나면 부모 프로세스에 결과를 돌려주고 종료된다.

 

PID(process identification number)

각 프로세스가 가지고 있는 고유한 번호

 

PCB(Process Control Block)

리눅스가 프로세스가 유지하는 주요 정보

1.PID(Process ID)

2.UID(User ID)

3.GID(Group ID)

4.파일 디스크립터(file descriptor. fd)

 

일반 프로세스

잠깐 실행되었다 바로 종료 됨

데몬 프로세스(daemon process)

특정 서비스를 제공하기 위하여 존재

24시간 동작하며 끝에 d가 붙고, 보통 웹에 쓰임

고아 프로세스(orphan process)

부모 프로세스가 먼저 종료되면 자식 프로세스는 고아 프로세스가 된다

1번 프로세스가 이런 고아 프로세스의 새로운 부모 프로세스가 되어 고아 프로세스가 작업을 마치고 종료될 수 있게 한다.

좀비 프로세스(zombie process)

자식 프로세스가 실행을 종료했는데도 프로세스 테이블 목록에 남아 있는 경우가 있는데 이를 좀비 프로세스라고 한다.

부모가 프로세스가 자식 프로세스의 종료 정보를 제대로 처리하지 않았기 때문에

defunct 프로세스라고 나오기도 한다.

 

ps

ps [옵션]

현재 실행 중인 프로세스에 대한 정보를 출력한다.

PID:프로세스 번호, TTY:현재 터미널 번호, TIME: 사용한 CPU시간, CMD:실행 중인 명령

$ 3141 pts/1 00:00:00 bash

-f

프로세스 정보 상세 출력하기(+UID, PPID(PID의 부모 PID), C, STIME)

 

a

터미널에서 실행시킨 프로세스 정보 출력하기

터미널을 필요로 하는 프로세스 정보 출력하기(PID TTY STAT(상태) TIME COMMAND)

STAT에 사용되는 문자의 의미

눔자 의미 비고
R 실행 중
S 인터럽트가 가능한 대기 상태
T 작업 제어에 의해 정지된 상태
Z 좀비 프로세스
STIME 프로세스의 시작 날짜나 시간
s 세션 리더 프로세스 BSD 형식

u 옵션

터미널에서 실행시킨 프로세스 상세 정보 출력하기

...교재 참고

포그라운드 백그라운드 프로세스와 작업 제어

포그라운드 작업

사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 하며, 작업 제어에선 포그라운드 작업이다.

일반적으로 사용자가 실행하며, 프로세스의 실행이 지연된다. (다음 명령 불가)

 

백그라운드 작업

명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있다.

명령의 마지막에 &(앰퍼샌드) 기호를 추가 ( $ sleep 100 &)

 

작업 제어

작업 제어 도구가 관리하는 프로세스를 작업이라고 한다.

한 터미널에서 동시에 여러 프로세스를 실행하고 관리하기 위한 도구

작업 전환, 작업 일시 중지, 작업 종료를 뜻한다.

작업 전환은 포그라운드/백그라운드 전환을 말한다.

작업 일시 정지는 작업을 잠시 중단하는 것

작업 종료는 프로세스를 종료하는 것

 

jobs

jobs [%작업 번호]

백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여준다.

항목 출력 예 의미
작업 번호 [1] 백그라운드로 실행할 때 마다 순차적으로 증가한다.
작업순서 + +:가장 최근, -:+ 작업 전의 작업, 공백: 그 외
상태 실행중 Running, Done, Terminated(비정상적 종료), Stopped(일시중)
명령 sleep100& 백그라운드로 실행 중인 명령이다.

 

작업 전환하기

명령 기능
ctrl+z 또는 stop %작업번호 포그라인드 작업을 중지한다.
bg %작업번호 작업 번호 작업을 백그라운드 작업으로 전환한다.
fg %작업번호 작업 번호 작업을 포그라운드 작업으로 전환한다.

 

작업 종료하기

ctrl+c //포그라운드 작업

kill PID || kill %1 //백그라운드 작업