본문 바로가기
Developing../POSIX:Linux

2. Basics - OS로써 LINUX 구조

by bents 2020. 12. 7.

1. 유닉스 특성 : IO Stream (CLI에서 데이터가 이동하는 방식)

2. 운영체제의 구조 : 하드웨어 - 커널 - 쉘

  - 하드웨어의 구조

  - 커널

  - 쉘 스크립트

  - 운영체제의 파일시스템 구조

3. 운영체제의 사용자 권리

  - 사용자 관련 명령어

  - 파일/디렉토리 권한 관련 명령어

  - 사용자그룹

4. 운영체제의 네트워크 관리 ( 인터넷 ) : 네트워크(클라이언트 - 서버)의 모임

  - 서버 : 서버동기화/로그인

  - 네트워크 : 원격제어/포트포워딩

  - 도메인 : DNS Server


1. UNIX 프로그램[프로세스] 특성

# 용어정리

  • 코드 : 프로그램
  • 실행코드 : 프로세스

# IO Stream : Standard input --> Unix process --> Standard output/error

  • Standard input : console input(키보드)
  • Standard output : console output
  • CommandLine arguements : 명령어가 아닌 모든 것 ( 옵션, 파일명 )

예제) command line에서 입력하는 경우, IO stream

~$ cat
hi # commandline args
hi # standard output
^D # 종료

 

# IO Redirection: 프로그램 output을 콘솔이 아닌 다른 장소(파일)에 저장.

 

Redirection operator : >

  • Standard output redirection : 1>
  • Standard error redirection : 2>
  • 출력저장소 결과물을 삭제하지 않고 결과물 누적(append) : >>
~$ ls -l 1> result.txt 2> error.log
~$ rm result.txt 1> result.txt 2> error.log
~$ cat result.txt
~$ cat error.log

# 한 문장을 가져오고, 출력물을 저장하라
# 명령어 < 표준입력 > 파일명
~$ head -n1 < result.txt > one.txt

# 쓰레기통
~$ head -n1 < result.txt > /dev/null

2. 운영체제(LINUX)의 구조 

- 물리적 기계 : 하드웨어

- 물리적 기계 제어 프로그램(기계동작) : 커널
- 제어명령 전달 매개체(명령해석) :

  - 쉘의 구성요소 : 명령(Standard input) 과 출력(Standard output)

  - 종류 : bash, zsh
  - zsh의 장점 : tab 자동완성, 디렉토리 위치 변경

  - 쉘의 위치확인 : `ls /bin`

# shell check
echo $0 
zsh
echo $0

2-1. 하드웨어

# 하드웨어의 구조

  • 주기억장치 Storage
    - 저가격, 고용량, 저속도 : 프로그램 저장(보관)
  • 보조기억장치 Memory
    - 고속도 접근 가능한 저장공간
  • 처리장치(명령실행장치) Processor
    - 고속도

# 하드웨어의 동작순서(=프로그램 전달 순서)

프로그램 실행시, 하드웨어에서의 프로그램 처리방식 

: Storage (모든 프로그램 저장) -> Memory (실행대상 프로그램 선택) -> Processor(처리실행)

- 프로그램 : 컴퓨터를 제어할 "명령"들의 작동방식이 작성된 binary code file

- 프로세스 : processor에 의해 실행처리되고 있는 프로그램

 

## 실행 프로그램의 분류 & 명령어

1) 선순위 실행 vs 후순위 실행

 

후순위 실행 프로그램 : 뒤에서 실행하는 프로그램

  • Ctrl + Z : 현재 프로세스를 백그라운드로 보내기
  • Fg + %번호(3) : 백그라운드 마지막 프로세스 실행
  • Jobs : 백그라운드 프로세스 목록보기
  • Kill [-9] %번호(4) : 프로세스 종료
  • 명령어 & : 백그라운드에서 명령 실행
# 예제 : 현재 디렉토리부터 최하위 디렉토리까지 상세 정보 저장하기
ls -alR / > result.txt 2> error.log &

2) 일반 실행 vs 항상 실행 vs 정기 실행

 

항상 실행중인 프로그램 ( 데몬 )

  • 데몬 위치 : cd /etc/init.d
  • 데몬 시작 : sudo service apache2 start
  • 데몬 종료 : sudo service apache2 stop
  • 부팅시, 자동실행 위치 : cd /etc/rc3.d
  • 부팅시, 자동실행 명령 : ./링크명(S03apache2)

정기 실행하는 프로그램 ( 크론 ) [링크]

  • 실행코드 작성 : crontab -e
  • 추가로그 상시 출력 : tail -f date.log
  • 실행코드 확인 : crontab -l
min, hour, dayof month, month, dayof week
1/*   *     *             *     *         -> 1분마다
10
10 1
​
*/60 * * * * date >> date.log 2>&1
# 2>&1 : 표준에러를 표준출력에 추가한다.

2-2. 커널

하드웨어와 쉘 스크립트의 연결 통로

2-3. 쉘 스크립트

- 정의  : 여러 개의 명령
- 목적 : 명령 자동화
- 편리기능 : alias, .bashr

$nano backup # bin/bash에서 실행, fi는 if조건문 종료, -d 존재여부

#!/bin/bash
if ! [ -d bak ]; then
        mkdir bak
fi
cp *.log bak

$ chmod +x backup # 실행가능한 파일

2-4. 운영체제의 디렉토리 구조(파일시스템 구조)

디렉토리 위치에 상관없는 명령실행이 가능한 이유: 환경변수 $PATH

: PATH에 등록된 디렉토리에 존재하는 명령어를 실행시킴. 따라서 명령어 입력한 위치에 상관없이 실행파일 검색해서 실행시킴.

 

# 파일검색 명령어

- locate : 데이터베이스 검색 ( mlocate, updated ) 

- Find : 디렉토리 검색

   - find + 검색위치 [+ 검색대상 타입옵션 + 타입선택] + 타검색방식 + 파일명

- whereis : 실행파일(binary file)위치 검색

 

* 자료

- 파일구조 : https://www.thegeekstuff.com/2010/09/linux-file-system-structure/

- 파일검색 : https://www.tecmint.com/35-practical-examples-of-linux-find-command/  

 

'Developing.. > POSIX:Linux' 카테고리의 다른 글

GIL - POSIX THREAD  (0) 2020.12.30
3. Basics - OS로써 LINUX (사용자/네트워크)  (0) 2020.12.07
4. LINUX CLI - 파일검색 / 텍스트 처리  (0) 2020.12.07
1. Basics - 리눅스 기본  (0) 2020.12.07
GIT - POSIX CLI  (0) 2020.12.07