운영체제(OS)
컴퓨터의 하드웨어와 소프트웨어 사이에서 소통을 도와주는 인터페이스. 하드웨어와 사용자 간의 중개자 역할을 하는 소프트웨어.
하드웨어 리소스 관리 & 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 지원함
EX) 유닉스, 리눅스, 윈도우, OS, X, 안드로이드 등
컴퓨터는 다양한 장치들이 한데 묶여서 각자의 역할이 상호작용하게끔 한다고 볼 수 있는데, 이 장치들이 상호작용을 하게끔 환경을 만들어 주는 것이 OS라고 할 수 있음
linux
유닉스 계열의 운영체제의 운영체제. 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여 개인 PC에서도 사용할 수 있는 오픈 소스로 개발하고 자신의 이름을 따서 리눅스로 정함
즉, 유닉스를 개인 컴퓨터에서 사용할 수 있도록 한 것 = 리눅스
EX) 우분투, 레드핫, CentOS, 페도라, 데비안 등
- 주요 모듈은 패키지 매니저를 통해 설치할 수 있음
- 패키지 설치 명령 : 패키지간의 의존성을 확인해서 자동으로 설치해주기에 사용이 편리
- 패키지 매니저
- yum
- 레드핫 계열, CentOS
- apt-get
- 데비안 계열, 우분투
주요 디렉토리
/bin : 기본 명령어 바이너리 저장
/dev : 장치 파일 저장
/etc : 설정 파일
/home : 사용자의 홈 디렉토리
/lib : 라이브러리 디렉토리
/lib64 : 64bit용 라이브러리 디렉토리
/mnt : 디스크 마운트 디렉토리
/opt : 사용자 응용 프로그램 설치 디렉토리
/proc :CPU, 메모리 등 시스템 정보 특수 파일 저장
/sbin : 필수 시스템 바이너리 파일 저장
/tmp : 임시 파일 저장. 주기적으로 지워지기 때문에 오래 저장할 파일을 보관하면 안됨
/var : 로그 등 시스템 운영중 계속 갱신데이터 저장
- / : 최상위 디렉토리라고 불리는 기호. 가장 큰 집합체
- 최상위 디렉토리에 가까울수록 상위디렉토리(반대쪽으로 갈 수록 하위 디렉토리)
- 윈도우와 리눅스의 차이: 윈도우는 Grahical User Interface(=GUI)인 반면, 리눅스는 Text User Interface(=TUI)
커널
하드웨어와 애플리케이션 간에 상호 작용을 도와주는 OS의 핵심 구성 요소
쉘
유닉스 계열 시스템에서 사용하는 대화형 인터페이스
사용자의 커널 사이에서 사용자의 입력을 받아 명령을 해석해 커널에 전달 & 그 결과를 사용자에게 반환
EX) Bash, Tcsh, Ksh, Zsh, Fish
프로세스(Process)
일반적으로 실행중인 프로그램 의미. 여러 개의 프로그램을 동시에 실행하는 것을 멀티태스킹이라고 하고, 이 프로세스를 관리하는 것이 운영체제의 주요 역할 중 하나임
리눅스의 프로세스 실행 방식
리눅스의 프로세스는 포그라운드(foreground)와 백그라운드(background) 방식으로 동작함
- 포그라운드 방식 : 키보드 입력을 받아서 동작하는 방식. 실행되면 다른 작업을 처리할 수 없어서 작업이 끝날 때가지 대기함
- 백그라운드 방식 : 사용자와의 대화 없이 실행되는 작업 방식. &를 붙여서 실행하고 다른 명령어를 추가적으로 입력할 수 있음
- 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됨. 작업시간이 오래 걸리는 경우 nohup 명령어를 이용해 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때가지 프로세스를 실행함
# 포그라운드 방식
$ sample.sh
# 백그라운드 방식 -- &추가
$ sample.sh &
# nohup 커맨드(no hang up)
$ nohup sample.sh &