네트워크교육 15일차(2022.01.21) - 정리

정상훈·2022년 1월 21일
0

파일 및 디렉토리 생성

표준 입출력

리디렉션 사용법 / 파일 생성

파이프라인

파이프 (|) :
- 한 프로그램의 출력을 중간 파일 없이 다른 파일의
입력으로 바로 보내는 유닉스 매커니즘

- 파이프는 파이프(|)기호 왼쪽 명령어의 출력을 
오른쪽 명령어의 입력으로 보낸다.

- 파이프라인은 하나 이상의 파이프로 구성된다.


명령어 예제 :

/etc/profile 의 내용을 한페이지 단위로 출력
#cat /etc/profile | more

/etc/passwd 파일의 내용을 역으로 정렬하면서 한 페이지 단위로 출력
#cat /etc/passwd | sort -r | more

tee

시스템 프로세스 관리

Process Management

프로세스 생성 :
- 기존 프로세스는 자체 주소 공간(fork)을 복제해서 새로운 프로세스 구조를 생성
- 모든 프로세스는 하위 프로세스 생성 가능
- 보안ID, 파일 설명자, 우선 순위, 환경 변수 등 상속


PID : 프로세스가 시작될 때 부여되는 고유한 ID넘버
PPID : 부모 프로세스의 PID값



부모 프로세스와 자식 프로세스 :

- 프로세스는 여러가지 기능을 수행함으로써 주어진 작업을 완료하며,
모든 기능이 완료되기 전까지는 종료될 수 없다.

- 부모 프로세스는 여러 개의 자식 프로세스를 실행하여
다수의 작은 작업들을 동시에 처리하도록 할 수 있다.


exec : 
한 프로세스가 다른 프로세스를 생성할 경우
원래의 프로세스가 더는 남아 있을 필요가 없다면 
exec 호출을 통해서 다른 프로그램을 실행
새로운 프로세스로 자신을 대체할 수 있다.

fork : 
exec에 반해 원래 프로세스가 계속 존재해야 한다면 
fork를 호출하여 자신의 복사본 프로세스를 먼저 만들고
복사본 프로세스에서 다시 exec를 호출하여 다른 프로그램을 실행하는 새로운 프로세스로 자신을 대체한다.

동작 방식

프로세스의 종류

프로세스의 종류 :

1) 대화형 프로세스 :

- 터미널과 세션을 통하여 사용자와 정보를 주고받으며 실행하는 프로세스를 말한다.

** 대화형 프로세스 제어 또는 작업 제어(job control)는 
프로세스를 포그라운드(fg)나 백그라운드(bg)로 전환 하는 역할을 하고
포그라운드(fg)에서 실행을 계속할 수 있도록 제어한다.

2) 배치 프로세스

- 일련의 작업을 몰아서 특정 시각에 실행 시키는 것이며, 일반적으로 터미널과의 입/출력 교류가 전혀 없다.

- 중요하지 않은 작업에 대해 시스템의 사용률이 낮을 때 처리하는데 매우 유용

3) 데몬 프로세스

- 데몬은 특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스이다.

- 일반적인 서비스는 각각의 서비스가 사용하는 포트를 관리하는 데몬이 존재

- 다른 데몬들에게 할당된 포트를 관리하는 특별한 용도의 데몬 존재


4) 좀비 프로세스

- 자식 프로세스가 종료 되었는데, 부모 프로세스에게 SIGCHLD 전달이 안되었을때, 혹은 손실(lost) 되었을 때 발생

- 자식 프로세스는 종료 되었는데 부모 프로세스는 종료되지 않거나, wait()계열 함수를 호출해서 자식 프로세스를 정리하지 않았을 때 발생

5) 고아 프로세스 

- 부모 프로세스만 먼저 종료된 경우

관련 명령어

1. ps

- 현재 동작하고 있는 프로세스들의 상황(스냅샷)을 보여줌

2. jobs

- 백그라운드로 실행중인 프로세스나 현재 중지된 프로세스 목록을 출력해줌

3. fg

- fg는 백그라운드 프로세스를 fg로 변환하는 명령어
#fg %작업번호

4. bg

- 포그라운드 프로세스를 bg로 전환하는 명령어

- 보통 실행시키고 있는 fg에서 CTRL+Z를 눌러 작업을 중지시킨 후에 bg명령어를 사용하여 작업을 백그라운드로 전환

5. SIGNAL

- 프로세스에게 발생하는 비동기적인 사건

- 비 동기적이므로 어느 시점에서 시그널이 발생할 지 미리 예측할 수 없음 

- 키보드를 통해 발생
CTRL+C(SIGINT), CTRL+Z(SIGSTOP)
- 커널 내부에서 발생
Kill(), alarm()과 같은 시스템 콜


6. Kill

- 프로세스나 프로세스 그룹에게 지정된 시그널을 보내줌

7. killall

- 프로세스 명 또는 데몬명으로 프로세스 종료시킴


profile
"@____

0개의 댓글