LINUX/리눅스 쉘 스크립트 바이블 정리

[리눅스 바이블] 1. 리눅스 쉘 시작하기

은재정 2022. 2. 3. 21:00

 

리눅스란 무엇인가?

리눅스 시스템은 다음과 같은 네 가지 주요 부분으로 구성된다.

- 리눅스 커널

- GNU 유틸리티

- 그래픽 기반 데스크톱 환경

- 애플리케이션 소프트웨어

<리눅스 커널>

이 중 리눅스 시스템의 핵심은 커널이다. 커널은 컴퓨터 시스템에 있는 모든 하드웨어 및 소프트웨어를 제어하고

필요할 때에는 하드웨어 자원을 배분하며 소프트웨어를 실행시킨다. 다음의 커널의 주요 기능이다.

1. 시스템 메모리 관리

커널은 서버에서 쓸 수 있는 물리적 메모리 관리만이 아니라 하드 디스크의 공간(스왑 공간)을

이용한 가상 메모리를 관리한다. 메모리는 페이지라는 단위로 관리되는데, 커널은 물리적 메모리/스왑 공간에

메모리의 각 페이지를 배치한다. 커널은 어떤 페이지가 실제 물리적 메모리에 있고, 하드 디스크에

있는지를 가리키는 테이블을 가지고 있다. 일정 시간 사용되지 않은 메모리를 swap-out 하면서

page fault를 최소화한다.

2. 소프트웨어 프로그램 관리

커널은 실행되고 있는 모든 프로세스를 어떻게 관리할지 제어한다.

커널은 시스템의 다른 모든 프로세스를 시작하기 위해 쓰이는 첫 번째 프로세스인 init 프로세스를 만든다.

리눅스 운영체제 시스템에는 다섯가지의 init 실행 레벨이 있다. 표준 초기화 실행 레벨은 3으로,

네트워크 지원 소프트웨어와 같은 대다수의 어플리케이션이 이에 해당한다. 실행 레벨 5는

그래픽 기반의 X 윈도우 시스템을 사용한다.

3. 하드웨어 관리

리눅스 시스템과 주변 장치를 연결하기 위해서는 드라이버 코드가 필요하다. 드라이버 코드는

애플리케이션과 하드웨어 사이의 중간 다리 구실을 한다. 리눅스 커널에 드라이버 코드를 삽입하기

위해서는 다음과 같은 두 가지 방법이 사용된다.

- 커널에서 컴파일한 드라이버

- 커널에 추가된 드라이버 모듈

두 번째 방법은 주변 기기가 달라짐에 따라 커널을 새로 컴파일할 필요가 없기 때문에 훨씬

효율적이고, 따라서 두 번째 방법을 사용한다.

리눅스 시스템은 디바이스 파일이라고 하는 특별한 파일로 하드웨어 장치를 식별하는데,

디바이스 파일은 세 가지로 분류된다.

- 문자: 한 번에 한 문자씩만 처리 가능

- 블록: 디스크 드라이브와 같이 한꺼번에 대규모의 데이터 처리 가능

- 네트워크: 데이터를 송수신 하기 위해 패킷을 사용하는 장치에 사용

4. 파일시스템 관리

다른 운영 체제와 다르게 리눅스는 데이터를 하드 드라이브에서 읽거나 쓰기 위해 여러 가지 유형의

파일 시스템을 지원한다. ext2, nfs 등이 그렇다.

<GNU 유틸리티>

파일과 프로그램을 제어하는 것과 같은 표준 기능을 수행한다. GNU 조직의 GNU 유틸리티와

리누스 토발즈의 리눅스가 합쳐져 현대의 리눅스가 된 것이다.

특히, GNU/리눅스 쉘은 특별한 대화형 유틸리티다. 쉘은 사용자가 프로그램을 시작하고,

파일시스템에 있는 파일을 관리하고, 프로세스를 관리하는 방법을 제공한다. 사용자는 커맨드 프롬프트로

쉘과 상호작용을 하고 쉘은 이를 해석해 커널에서 실행한다. 리눅스에서 사용할 수 있는 여러 쉘이 있지만,

리눅스 배포판에서 사용하는 기본 쉘은 bash 쉘이다.