파일 및 디렉토리 생성
파이프 (|) :
- 한 프로그램의 출력을 중간 파일 없이 다른 파일의
입력으로 바로 보내는 유닉스 매커니즘
- 파이프는 파이프(|)기호 왼쪽 명령어의 출력을
오른쪽 명령어의 입력으로 보낸다.
- 파이프라인은 하나 이상의 파이프로 구성된다.
명령어 예제 :
/etc/profile 의 내용을 한페이지 단위로 출력
#cat /etc/profile | more
/etc/passwd 파일의 내용을 역으로 정렬하면서 한 페이지 단위로 출력
#cat /etc/passwd | sort -r | more
시스템 프로세스 관리
프로세스 생성 :
- 기존 프로세스는 자체 주소 공간(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
- 프로세스 명 또는 데몬명으로 프로세스 종료시킴