22.04.06

HyeonKi Jo·2022년 4월 6일
1
post-thumbnail

이론

운영체제

  • 쉘(shell)이란 사람이 사용하는 명령어를 프로그램이 실행할 수 있도록 만들어 주는 인터페이스.
  • 쉽게, 터미널에서 사용하는 명령어를 말한다.
  • 윈도우에서는 명령프롬프드도 쉘이다.(CLI) 그러나 그냥 폴더를 여는 것(탐색창)도 쉘 명령어이다.(GUI)
  • 쉘에서는 프로그램에 직접 명령어를 전달할 수도 있고, 내부에서 함수도 짤 수 있으며, 또 초기 환경 셋팅도 가능하다.
  • 우리가 4/5일 사용한 것은 bash shell이다. (CentOS환경)
  • sh shell 환경도 존재한다.

디렉토리

  • 컴퓨팅에서 파일을 분류하기 위해 사용하는 이름공간이다.
  • 폴더(folder), 또는 카탈로그(Catalog)라고 한다.
  • 디렉토리 안의 디렉토리는 서브디렉토리(Sub directory)라고 한다.
  • 디렉토리들은 계급, 곧 트리 구조를 형성한다.

운영체제 요소

  • 커널
  • 디렉토리

리눅스란?

  • 리눅스는 매우 가볍고 적은 용량으로 설치가 가능하며, 가벼운 만큼 복제가 쉽다. 따라서, 스케일 아웃(수평적 확장)할 때 가장 적합하다.
  • 또, 커널이 공개되어 있어, 커널을 수정하여 사용할 수 있다.
  • 리눅스(Linux)는 컴퓨터 운영 체제(서버 운영체제)이며, 그 커널을 뜻하기도 한다.
  • 리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 표본으로 들 수 있다.
  • 다중 사용자, 자중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영체제(NOS)이다.
  • 리눅스, AWS관점에서 네트워크를 구성 해 볼것이다. 이때, 리눅스가 네트워크 구성에 강하다.
  • 초기에는 몇몇의 전문가만 사용했지만, Unix가 서버 분야에서 Windows를 대체하는 등, 현재는 많이 사용된다.
  • AWS AMI, Amazon Linux2, Ubuntu 등 사용되고 있다.
  • 많은 전문가들이 이러한 성공을 벤더 독립성(상품화 쉬움, 구매필요X), 적은 개발비, 보안성과 안전성에 기인한다고 분석한다.
  • 리눅스는 PC부터 슈퍼컴퓨터, 모바일 등 임베디드 시스템까지 이용된다.

리눅스의 역사

  • Unix로 시작. 여전히 존재
  • BSD : Unix기반 버클리 Universty Distributon, 클라우드보다 물리서버쪽에서 유명하다.
  • 그 다음 Linux가 나왔다.
  • 그 외에도, Solaris, CentOS, Ubuntu, MacOS

리눅스의 디렉토리 구조

상대경로와 절대경로

  • /: 부터 시작되면, 최상위 경로부터 말하는 것으로 절대경로이다.
    - 예 : /etx/systemconfig/network-system/~~~
  • 상대경로는 현재 작업 위치 기준으로 시작하는 경로이다.
    - . : 현재경로
    • .. : 이전 경로

CLI명령어 구조

  • #명령어 [옵션][인자]
    - 예 : ls -l /etc

자주 쓰이는 디렉토리

  • home : 사용자 홈 디렉토리가 생성되는 곳. (권한 제어 떄문에 아무데나 들어갈 수 없음)
    - ~ : cd ~ 하면 여기로 돌아온다. (root사용자는 root로감)
  • media : CD_ROM이나 USB같은 외부 장치를 연결하는 디렉토리
    - mount 관련 디렉토리
  • opt : 추가 패키지가 설치되는 디렉토리
  • dev : 장치파일들이 저장되어 있는 디렉토리
    - CD_ROM, DVD_ROM 같은 장치들을 서버에 붙일 떄, sr0(장치파일) 이런 것들이 있다.
    • 장비에 연결할 떄, 연결하는 장치파일이 dev에 들어있다.
  • root : root계정의 홈 디렉토리 (/ 디렉토리랑 다름, root유저가 cd ~ 하면 여기로 온다.)
  • sys : 리눅스 커널관련 정보가 있는 디렉토리
  • usr : 기본 실행파일과 라이브러리 파일, 헤더 파일등의 파일이 저장되어 있는 디렉토리
  • boot : 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리
  • var : 시스템 운영중에 발생한 데이터와 로그가 저장되는 디렉토리
    - 홈페이지를 꾸밀 때 필요한, 정보가 /var/www/html/index.~~ 에 있다.
  • tmp : 시스템 사용중에 발생한 임시데이터 저장 (부팅 시 초기화)
  • srv : FTP나 Web등 시스템에서 제공하는 서비스의 데이터가 저장되는 디렉토리
  • run : 실행중인 서비스와 관련된 파일이 저장되는 디렉토리
  • proc : 프로세스 정보 등 커널 관련 정보가 저장되는 디렉토리
  • mnt : 파일 시스템을 임시로 연결(Mount)하는 디렉토리
  • etc : 리눅스 설정을 위한 각종 파일들을 가지고 있는 폴더

실습

복습

Image

  • 이런 이미지 들은 도커에서도 사용할 것이다.
  • 또, 도커에서는 더 작은 용량의 이미지를 사용하게 될 것이다. (용량이 작을수록 더 빠르다.)

Bridge

  • HostOnly + NAT 조합을 한번에 쓸 수 있다.
  • 그러나 IP를 받을 수 없는 상황이 생길 수 있다.

환경 다시 설치

PC 스팩 (Minimal)

  • CPU : 2C
  • RAM : 4Gb(4096Mb) - VGA (128Mb)
  • SSD : 128Gb (동적할당, Thin Provisioning)
  • IMG : ContOS7Mini*.iso
  • 플로피 해제
  • 비디오메모리 128Mb (최대)
  • iso 마운트
  • 오디오 체크 해제
  • USB해제
  • 네트워크 어댑터1 : NAT, 어댑터2 : Host Only

VM 설정

  • 언어 English US, 날짜 및 시간 : Seoul, Partitioning: /home지우고 /에 몰빵
    - Swap : 속도향상, 기능향상을 위해 메모리자원을 효율적으로 사용하기위해 사용하는 공간
  • 설정한 랜카드 2개를 on으로 하고 Done
    - 그러나 랜카드 2개를 동시에 설정한것은 처음이다.
    • 한번에 2개를 켜면 랜카드 하나가 꺼져있을 수 있다.
    • 그래서 터미널에서 수동으로 켜야한다. 차후 강의예정
  • Root Password를 만들어 준다.
    - 이러한 보안 관련은 AWS AMI 에서 또 볼것이다.
  • NAT랜카드는 켜졌지만, HostOnly가 안잡힘을 볼 수 있다.
    - 이때, 랜카드를 키는 방법을 알아본다.
    - cd /etc/sysconfig/network-scripts/
    - vi 사용
    - vi test.txt
    - insert모드 들어가기 : i (문자 입력 모드)
    - ~~ 모드 탈출하기 : Ecs key
    - 기본 상태에서 : :누르면 명령어 입력모드
    - 명령어 모드에서 w: 저장한다.
    - 명령어 모드에서 q : 나간다.
    - 명령어 모드에서 wq : 저장하고 나가기
    - 명령어 모드 + 명령어 + Enter : 실행
    - cat test.txt 로 작성된 내용 확인해보다
    - mode를 잘 보고 있어야 실수를 막을 수 잇다.
    - LAN카드 Power on
    - vi ifcfg-enp0s8
    - ONBOOT=yes 하고 :wq 고고
    - if : interface
    - LAN카드 설정 변경 후,
    systemlctl restart network
    를 해줘야한다.

    - 제대로 나왔다. (근데 IP가 안잡힌다.)

VM백업

  • 이름 : CentOS7XFCE
  • MAC 주소정책 : 모든 네트워크 어댑터의 새 MAC주소 생성
  • 완전한 복제
  • 실행 후 ip a 로 ip가 제대로 나오는지 확인한다.

CentOS7XFCE

  • VM 메뉴바에서 장치 -> 클립보드 공유, 드래그앤 드롭 모두 양방향
  • 장치 -> 가상확장 CD이미지 삽입 누른다.
  • 먼저 CentOS 경량 데스트톱(X-Windows)를 설치한다.
  • 옵션 중 -y는 묻지말고 설치하라는 옵션인데 yum 뒤면 아무데나 위치하여 띄어쓰기로 구분만 되면 된다.
  • unzip wget : unzip이라는 도구와 wget이라는 도구를 설치했다.

  • Linu에서는 크롬을 지원하지 않기 때문에, 크롬 설치는 Repository를 따로 만들어서 사용해야 한다.
  • opt/google/~~ : 구글 추가 패키지가 저장된다.

한글 나눔글꼴 설치

# mkdir /usr/share/fonts/nanumfont && cd $_
# wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
# unzip NanumFont_TTF_ALL.zip

화면 크기 자동맞춤

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install -y perl gcc dkms kernel-devel kernel-headers make bzip2
# ls /dev/sr0
# mkdir /test 
# mount /dev/sr0 /test  (`umount /test` 해서 마운트 해제 가능)
# df -h 
#cd /test
./VBoxLinuxAddtions.run
  • 최상위 폴더 /에 test하위폴더를 만들고, mount /dev/sr0 /test해서 test에 sr0를 마운트 한다. (읽기 전용으로 마운트 된다.)
  • df -h 사용하고 있는 용량을 확인할 수 있음
  • 만약 ls /dev/sr0 했을 때, 출력으로 /dev/sr0이 나오지 않는다면,
    - webshare를 PC로 킨다.
    • C:\ProgramFiles\Oracle\VirtualBox\VBoxGuestAdditions.iso 의 압축을 풀고, 그 안에 VBoxLinuxAddtions.run을 webshare로 올려준다.
    • 그후, VM으로 크롬 에서 들어가 다운받는다.
    • wget http://[HostIPAddress]/Files/VBoxLinuxAdditions.run 로 다운 받아준다.
    • 다운받은 폴더를 찾고, chmod 744 로 권한 변경해준다.
    • 그리고 mv /test로 옮겨준다.
  • 다운받을때는 흰글씨지만 chmod로 실행가능하게 해주니 초록색이 되었다.
  • /test로 옮겼으나, 읽기전용이라 옮겨지지는 않았다.
  • chmod
    - r : 4, Read
    • w : 2, Wright
    • x : 1, eXcute

CLI 복습

  • mkdir 여러파일 만들기


  • touch 여러파일 만들기


  • cat


CLI 제어문자

  • Ctrl + u
    - 지금 입력되고 있는 명령어 싹 지워지는거
    • 근데 Ctrl + C면 된다....
    • Ctrl + w면 한 단어씩 지워진다.
  • Ctrl + S
    - 출력이 너무 많을 때, 출력 일시정지
  • Ctrl + Q
    - 출력이 너무 많을 떄, 탈출 (쓸일 없을것이다.)
  • Ctrl + c
    - 정지와 복귀를 반복하다 빠져나온다.
  • du -a : 출력이 많이 나오는데, 이걸로 위 제어문자를 테스트해보자.

매뉴얼 페이지

매뉴얼 페이지 보기

  • 나올 때는 q를 누른다.
  • man uname


  • man ls


그 외 CLI명령어

ls

  • ls -l (long, 세부정보 포함)


  • ls -a

    - 위 .파일명으로 되어있는 파일들은 숨겨진 파일이라 그냥 ls로는 나오지 않는다.

  • ls -al : (-a 속성과 -l 속성을 같이 출력)


  • ls =l /dev

    - dev폴더에 있는 파일들에 대한 ls -l를 읽어왔다.
    - 위 sda파일은 리눅스의 루트 드라이브이다. (Windows로 치면 C드라이브)
    - 이게 파일로 되어있는 리눅스의 특징을 볼 수 있다.
  • ls -l dirA : dirA안의 폴더들의 정보를 보여준다.
  • ls -ld dirA : dir의 정보를 보여준다.
  • ls -r : 모든 파일들의 하위파일을 보여준다.
  • ls -r dir : dir의 하위파일을 보여준다.


file

  • file fileA : fileA 내용에 대한 정보를 보여준다.
    - cat > fileA로 text를 넣어주니 empty에서 ASCII 파일로 바뀌었다.

    - 아까 SDA파일은 block Special이라 나온다.


  • ls -a 을 실행했을 떄, ...이 나오는데,
    - .는 현재 폴더를 의미한다. 따라서 cd .하면 변화가 없다.
    - ..는 상위 폴더를 의미한다. 따라서 cd ..하면 상위 폴더로 올라간다.
  • 위 3가지 방법으로 /home으로 갈 수 있다. (root사용자 기준 /root)

파일 작업

more

  • cat /etc/ssh/sshd_config : 명령어 입력하면 위처럼 매우 길게 나와 읽기 힘들다
  • more /etc/ssh/sshd_config : more를 사용하면, 스페이스바를 누르며 조금씩 읽으며, 아래로 내려갈 수 있다.

echo

  • \기호는 엔터(줄바꿈)을 의미한다.
  • echo는 number라는 파일을 만들면서, ""사이의 내용을 넣으면서 출력했다.

cat, head, tail

  • cat numbers : 1~15까지 출력 되었다.
  • head numbers : 1~10까지만 출력 되었다. (앞 10줄만 출력해준다.)
  • head -13 numbers : 1~13까지 정한 만큼만 출력할 수도 있다.
  • tail -5 numbers : head와 비슷한 맥락으로 뒤에서 정해진 줄 만큼만 보여준다. (아래것이 가장 최근 것이라면, 최근 자료만 볼 수 있다.)

wc

  • wc는 파일의 데이터 정보를 알려준다.
    - wc -l : 데이터 line수
    • wc -m : 데이터의 char수
    • wc -c : 데이터 bytes
    • wc -w : 데이터 word수
      • man wc 참조

복사

파일 복사

  • cp A B : A를 B이름으로 복사한다.
  • cp A dirA : A를 dirA에 복사해서 넣어준다.

디렉토리 복사

  • cp dirA dirAA : dirA에 내용물이 있다면 그냥 복사할 수는 없다.
    - cp -r dirA dirAA : -r (Recursive)옵션을 주어 내용물까지 복사한다.

이동

파일 이동

  • mv fileD dirC : 현재 위치에서 존재하는 fileD를 dirC로 이동시켰다.

디렉토리 이동

  • mv dirCC dirC : dirCC를 dirC로 옮긴다. (삭제가 아니기 떄문에 옵션이 필요 없다.)

생성

빈 파일 생성

  • touch : 파일 생성

디렉토리 생성

  • mkdir dirX : dirX라는 디렉토리를 만든다
  • mkdir dirY/dirZ : dirY가 없으니, 에러가 난다. (dirY로 dirZ를 만든다.)
  • mkdir -p dirY/dirZ : -p옵션을 줘서, dirY도 만들고 dirZ도 만든다.
profile
Talking Potato

0개의 댓글