과제 : 리눅스 운영체제

10142 단어 nhnOSlinuxOS

what?

Linux를 공부합니다

why?

Linux환경에 익숙해지기 위한 개념 학습이 필요

how?

생활코딩 리눅스 영상을 보고 내용을 학습 후 이를 정리


linux file&directory

ls -al : 파일의 목록을 보여줌(감춰진파일까지 전부)
ls : 현재 위치 아래의 파일 보여줌
ls -l : 현재 위치 아래의 파일 자세히 보여줌
pwd : 현재 위치 경로를 보여줌
mkdir [파일이름] : 디렉토리 생성
touch test.txt: 비어있는 파일 생성
cd [파일이름]: 해당 파일로 이동
rm: 파일 및 디렉토리 삭제 명령어
cat: 파일의 내용을 확인할 수 있음

파일과 디렉토리 구분!
drwxrwxr-x : 디렉토리
-rw-rw-r-- : 파일


linux help&man

명령어 --help:해당 명령어의 옵션들을 확인
man 명령어:명령어에 대한 자세한 설명 확인 -> /sort입력 시 sort라는 단어만 찾을 수 있음


sudo

sudo 란? 슈퍼명령어, super user do
예시를 통해 알아보자
sudo를 써주지 않으면 권한 거부. 따라서, sudo를 통해 install가능!


file edit (nano)

nano를 통해 파일을 생성하는 법
nano > enter > html 생성 > ctrl+O( 파일이름생성 ) > enter > ctrl+X( exit )

nano를 통해 파일을 수정하는 법
nano [파일이름]


package manager

apt package manager 를 사용하여 package manager를 알아봅시다.
1) sudo apt-get update를 통해 최신상태로 업데이트
2) sudo apt-cache search htop 를 통해 시스템 상태를 조작하지 않지만 update 명령을 통해 가져온 패키지 메타 데이터에서 각종 유용한 정보를 검색하고 생성
3) sudo apt-get install htop을 통해 htop을 다운로드
4) sudo apt-get install htop를 통해 업데이트도 가능
5) sudo apt-get remove htop를 통해 삭제 가능


file download (wget)

wget 이란????
HTTP 통신 또는 FTP 통신을 사용해 서버에서 파일 또는 콘텐츠를 다운로드할 때 사용하는 소프트웨어

  • how?

    주소를 copy 해 wget 명령어 뒤에 paste 하면 파일을 다운로드 할 수 있습니다.

  • wget -O option

    wget -O [파일이름] [주소] : 파일을 지정한 이름으로 다운로드 가능


source download (git)

1) git 이 없다면 sudo apt-get install git을 통해 다운로드
2) [오픈소스 코드의 주소]를 copy
3) git clone [오픈소스 코드의 주소] src
([오픈소스 코드의 주소]가 src라는 디렉토리에 다운로드 됨)
4) ls -l을 통해 다운로드를 확인해볼 수 있음


CLI vs GUI

CLI(Command Line Interface)란?

  • 글자의 입출력을 통해 사용자와 컴퓨터 간 소통하는 방식
  • 대표적인 CLI로는 윈도우의 cmd, 맥의 terminal, 리눅스의 terminal
  • 키보드 + 명령어 사용 가능

GUI(Graphic User Interface)란?

  • 사용자가 그래픽을 통해 사용자와 소통하는 방식
  • 그래픽으로 전달되는 그림이나, 아이콘을 통해서 소통
  • 키보드 + 마우스 모두 사용 가능

Q. CLI 와 GUI 중 어떤 것이 컴퓨터 에너지를 많이 쓸까요?

A. 정답은 GUI 방식입니다!

  • 일반인들이 사용할때에는 사용하기 쉬운 GUI를 권장합니다. 하지만 서버 컴퓨터나 데이터를 분석하는 시스템 등은 CLI를 사용하는 것으로 용량,cpu,메모리 등을 더 적게 사용할 수 있습니다.
  • GUI방식은 배우기 쉽지만 순차적으로 진행하는 일을 자동화하기는 어렵습니다.

Why CLI?

1. sequence execution(순차 실행)

먼저 CLI환경에서 디렉토리에 접근하는 법을 생각해봅시다.
mkdir test를 통해 디렉토리를 생성 > cd test를 통해 디렉토리로 이동
우리는 이 과정을 mkdir test;cd test 이렇게 명령어 한줄로 작성 할 수 있습니다. 컴퓨터는 순서대로 그 명령들을 실행하고, 최종적인 결과만을 알려줍니다.

2. pipline(파이프라인)

  • 파이프의 정의 : '무언가를 어느 한 곳에서 다른 곳으로 전송한다'
  • 파이프라인(|)의 특성
    1) 프로그램과 프로그램을 연결한다
    2) 하나의 명령의 실행 결과를 다른 명령의 입력으로 준다
    (= 하나의 프로그램의 결과를 다른 프로그램의 입력으로 준다)
    (= 하나의 프로세스의 출력의 결과를 다른 프로세스의 입력으로 준다)

✋ 여기서 잠깐 grep 명령어를 알아봅시다!

  • EX 1) test.txt 안에서 linux가 포함되어 있는 행만 출력
    => grep linux test.txt 명령어 사용
  • EX 2) ls --help 안에 sort라는 문자가 포함된 행만 출력
    => ls --help | grep sort
  • EX 3) ls --help 안에 sort라는 문자가 포함되어 있으면서 file이라는 문자도 포함되어 있는 행만 출력
    => ls --help | grep sort | grep file

IO Redirection Output

그림을 통해 알아봅시다UNIX 계열의 시스템은 어떤 프로그램이 실행되면, 그것을 프로세스라고 합니다.

  • command line arguments : 명령어에 부가적으로 붙는 옵션
  • 어떤 프로세스가 실행되는 출력값
    - standard output : 명령어를 통해 얻은 결과
    - standard error

standard output

ls -l 의 내용을 result.txt로 보내기
=> ls-l > result.txt
=> cat result.txt
=> ls -l의 내용이 result.txt로 보내진 것을 확인할 수 있음

  • Command line Arguments -> 프로세스 -> Standard Output에 대한 작업을 Redirection
  • 즉, 화면으로 출력되는 방향을 다른 곳으로 돌려서 파일에 저장한 것

standard error

첫번째 예시에서는 에러메세지가 reult2.txt에 담기지 않음

why?

첫번째 예시에서 사용한 '>'의 앞에는 1이라는 숫자가 생략되어있고, 이것은 Standard Output을 Redirection 한것입니다. Standard Error를 Redirection을 한 것이 아닙니다. Standard Error를 Redirection 하려면 '>'앞에 2라는 숫자를 넣어주어야 합니다.

'>'는 명령어를 실행할 때마다 새로운 내용을 넣게 됩니다. 로그를 계속해서 추가해 내용을 저장해야 할 경우가 생길 수 있습니다. 그렇다면 내용을 이어붙일 수 있는 방법은 무엇일까요?
바로 '>>' 이렇게 적어주는 것입니다.


IO Redirection Input

cat은 그림의 Unix process에 해당명령어 cat을 통해 사용자가 키보드를 통해 입력하는 정보를 standard input으로 받음.
명령어 cat을 통해 hello.txt의 내용을 standard input으로 받음.

linux.txt 의 내용이 입력이 되어 one.txt로 들어가게 됨.


Shell vs Kernel

Kernel

  • 알맹이, 핵심, 코어
  • Kernel이라고 하는 프로그램은 하드웨어 즉, 물리적인 기계를 직접적으로 제어하는 운영체제에서에서 가장 중심이 됨

Shell

  • 껍데기, 주변
  • 사용자는 Linux에서 Shell을 대상으로 명령를 입력하고
    예) ls -al, ls;pwd 등
  • 사용자가 커널을 직접적으로 제어할 수 없기에 사용자가 입력한 명령을 해석해서, 커널이 이해할수 있는 방식으로 커널에게 전달

bash vs zsh

Shell 프로그램 : bash,zsh

shell 이라는 카테고리에 속하는 구체적인 제품 중 하나인 bash 프로그램을 쓰고 있다

shell 프로그램 zsh를 사용하고 있다

  • bash와 zsh는 유사한 특성을 가짐
  • zsh의 경우 bash가 갖고 있지 않은 추가적인 기능들이 있어서 좀 더 편리하다라고 평가를 받고 있음

Shell Script

  • 여러개의 명령어를 순차적으로 실행해야하는 명령의 순서를 script로 작성 후 저장하고 필요할 때마다 불러와서 실행함
  • 명령을 실행시키는 작업을 한번에 실행 => 자동화

자동으로 backup해주는 shell script를 작성해 봅시다!

1) nano backup을 통해 빈 파일 생성

[backup]파일 안에 쉘스크립트를 적어줌

#!/bin/bash
if ! [ -d bak ]; then
        mkdir bak
fi
cp *.log bak
  • #!/bin/bash
    - 밑에 작성되는 코드들이 bin/bash 라는 프로그램을 통해서 해석되어야 한다는 표시이다
  • if ! [ -d bak ]; then
    mkdir bak
    - 현재 디렉토리에 bak 파일이 없다면 만들어주고 있다면 만들지 않음
  • fi
    - 조건문이 끝났다는 것을 알려줌
  • cp *.log bak
    - 파일중에 .log로 끝나는 파일을 bak라는 디렉토리로 복사

2) backup파일을 실행하려고 하면 접근 권한이 없다는 오류가 남

따라서 실행가능한 파일을 만들려면
$ chmod +x {shell파일명}를 사용해야함 => 실행가능한 모드를 추가한 것


Directory structure

  1. / - Root
  • 모든 단일 파일 및 디렉토리는 루트 디렉토리에서 시작합니다.
  • 루트 사용자 만이 디렉토리 아래에 쓰기 특권이 있습니다.
  1. / bin - User Binaries
  • 사용자가 사용하는 명령어가 있음
    예 : ps, ls, ping, grep, cp.
  1. / sbin - System Binaries
  • / bin과 마찬가지로 / sbin도 바이너리 실행 파일을 포함합니다.
  • root 사용자(시스템 관리인)가 일반적으로 사용하는 명령어
  • 예 : iptables, reboot, shutdown
  1. / etc - Configuration Files
  • 모든 프로그램에 필요한 구성 파일이 들어 있음
  • 시스템이 동작하는 방법의 설정을 변경하고 싶다면 이 파일을 찾기
  1. / dev - Device Files
  • 장치 파일을 포함합니다.
  • 여기에는 터미널 장치, usb 또는 시스템에 연결된 모든 장치가 포함
  1. / proc - Process Information
  • 시스템 프로세스에 대한 정보가 들어 있습니다.
  • 이 파일 시스템은 실행중인 프로세스에 대한 정보를 포함
  1. / var - Variable Files
  • var은 변수 파일을 나타냅니다.
  • 증가 할 것으로 예상되는 파일의 내용은이 디렉토리에서 찾을 수 있습니다.
  • 임시파일을 저장하기에 좋은 디렉토리
  1. / tmp - Temporary Files
  • 시스템 및 사용자가 만든 임시 파일이 포함 된 디렉토리
  • 이 디렉토리의 파일은 시스템이 재부팅 될 때 삭제됨
  1. / usr - User Programs
  • 2 차 수준 프로그램의 바이너리, 라이브러리, 문서 및 소스 코드가 들어있음
  1. / home - Home Directories
  • 모든 사용자가 개인 파일을 저장하는 홈 디렉토리.
  1. / boot - Boot Loader Files
  • 부트 로더 관련 파일
  1. / lib - System Libraries
  • / bin 및 / sbin 아래에있는 바이너리를 지원하는 라이브러리 파일이 들어 있습니다.
  • 라이브러리 파일 이름은 ld 또는 lib .so입니다. *
  1. / opt - Optional add-on Applications
  • opt는 선택 사항입니다.
  • 개별 공급 업체의 애드온 응용 프로그램을 포함합니다.
  1. / mnt - Mount Directory
  • sysadmin이 파일 시스템을 마운트 할 수있는 임시 마운트 디렉토리.
  1. / media - Removable Media Devices
  • 이동식 장치의 임시 마운트 디렉토리.
  1. / srv - Service Data
  • srv는 서비스를 의미합니다.
  • 서버 관련 서비스 관련 데이터가 들어 있습니다.
  • 예를 들어, / srv / cvs는 CVS 관련 데이터를 포함합니다.


참고 링크

좋은 웹페이지 즐겨찾기