4 분 소요

인생 시작

어제 하루 그냥 날림

009 콘서트 보고왓는데 라이브 생각보다 절고 별로였음. 걍 공부할껄

오늘 목표치

  1. 강의 다듣기

  2. 과제 하기

7강 Linux & Shell command

linux : 무료(오픈소스), 안정성, 신뢰성, 유닉스라 stability, reliability

CLI : command line intercae (터미널)

GUI: graphic user interface (vscode)

  • 대표적인 linux 배포판

Debian

Ubuntu : 초보자 접근 쉽게 만듬 -> 많이 씀

Redhat

CentOS

  • linux 사용하는 방법 VirtualBox에 Linux 설치, Docker로 설치

WSL 사용(윈도우)

Notebook에서 터미널 진행

  • 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램

터미널/콘솔 : 쉘을 실행하기 위해 문자입력을 받아 컴퓨터에 전달 / 출력을 화면에 작성

종류 : sh (최초의 쉘) , bash (Linux 표준), zsh (Mac, Os 기본)

쉘 커맨드

  • man : 매뉴얼 문서 보고 싶은 경우 (종료 -> :q)

  • mkdir : 폴더 생성
  • ls : 현재 폴더 파일 확인 옵션:

-a : .으로 시작하는 파일, 폴더를 포함해 전체 파일 출력

-l : 퍼미션, 소유자, 만든 날짜, 용량

-h : 용량 (-lh 처럼 l 과 같이 사용)

  • pwd : 현재 폴더 경로를 절대 경로로
  • cd: 폴더 변경하기
  • echo : 터미널에 텍스트 출력(파이선 print 느낌) backtick + 쉘 커맨드 입력시 쉘 커맨드의 결과를 출력

  • vi : vim 편집기로 파일 생성

1) Command mode (기본 모드)

image-20221112150124855

  1. Insert Mode

창이 뜨면 i 눌러서 INSERT 모드 진입

ESC 눌러서 Command Mode 로 다시 이동

  1. Last Line Mode

ESC 누르며 : 누르면 나오는 모드

image-20221112150611315

  • bash
    bash 로 쉘 스크립트 실행
  • sudo 관리자 권한으로 실행하고 싶은 경우

굉장히 조심해야 함. 왠만하면 pip 쓰자

  • cp 파일 또는 폴더 복사하기

옵션 : -r(디렉토리 안에 파일도 모두 복사) / -f(복사할 때 강제로 실행 이슈무시)

  • mv 파일, 폴더 이동 / 이름 바꾸기

  • cat 특정 파일 내용 출력 / 여러 파일 합쳐서 출력

image-20221112151014214

  • clear

터미널 창 깨끗하게

  • history 결과에서 !숫자 입력시 그 커맨드 다시 활용 가능

  • find

find . -name “File” : 현재 폴더에서 File 이란 이름 가지는 파일, 디렉토리 검색

  • export

환경 변수 설정

export water = “물”

echo $water

-> 터미널이 꺼지면 사라지게 됨

-> 제대로 저장하고 싶으면 .bashrc, .zshrc 에 저장하면 됨

  • alias

별칭을 지정, 기본 명령어 줄여서 쓸 때 사용

image-20221112151505665

  • head, tail

파일 앞/뒤 n행 출력

  • sort 행 단위 정렬

-r : 정렬을 내림차순으로 (reverse) -n : Numeric sort

ex) cat fruits.txt sort -r
  • uniq 중복된 것들 제거

-c : 중복 행의 개수 출력

ex) cat fruits.txt sort uniq
  • grep 파일에 주어진 패턴 목록과 매칭되는 라인 검색
ex) ls grep “vi” : 현재 폴더에 있는 파일 명중 vi 가 들어간 단어 찾기

image-20221112153510914

  • cut 파일에서 특정 필드 추출

-f : 잘라낼 필드 지정 -d : 필드를 구분하는 구분자

ex) cat cut_file cut -d : -f 1,7

표준 스트림

image-20221112155106121

Unix 동작 프로그램은 커맨드 실행시 3개의 stream 생성됨

  • Redirection & Pipe (매우 중요) 프로그램의 출력을 다른 파일이나 스트림으로 전달

Redirection : 프로그램의 출력(stdout) 을 다른 파일이나 스트림으로 전달

1) > : 덮어쓰기(overwrite) 파일이 없으면 생성하고 저장

2) » : 맨 아래에 추가하기 (append)

Pipe : 프로그램의 출력을 다른 프로그램의 입력으로 사용하고 싶은 경우

ex)

ls grep “vi” : 현재 폴더에 있는 파일 명중 vi 가 들어간 단어 찾기
history grep “echo”

서버에서 자주 사용하는 쉘 커맨드

  • ps (process status) 현재 실행되고 있는 프로세스 출력하기

-e :모든 프로세스

-f : Full Format

  • curl Request 를 테스트 할 수 있는 명령어

  • df 현재 사용중인 디스크 용량 확인 (disk free)

-h : 사람이 읽기 쉬운 형태로 출력

  • scp ssh를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어 (secure copy)

-r : 재귀적 복사 -P : ssh 포트 지정 -i : SSH 설정을 활용해 실행

image-20221112163058245

image-20221112163106256

image-20221112163111331

  • nohup

터미널 종료 후에도 계속 작업이 유지되도록 실행 (백그라운드 실행)

마지막에 & 붙여야함

ex) nohup python3 app.py &

종료 :

ps ef grep app.py 하여

pip 찾고

kill -9 pid 로 프로세스 Kill

이외에도 screen이라는 도구도 있음

  • chmod 파일의 권한을 변경하는 경우

image-20221112163813212

ls -al 으로 퍼미션 확인해보자

  • 쉘 스크립트
    쉘 커맨드의 조합

.sh 파일을 생성하고 그 안에 쉘 스크립트 추가

작성시 bash name.sh 로 실행 가능

https://github.com/zzsza/shell-scripts

https://github.com/denysdovhan/bash-handbook

https://github.com/epety/100-shell-script-examples

  • special mission : 카카오톡 그룹 채팅방에서 옵션 - 대화 내보내기로 csv로 저장 후, 쉘 커맨드 1줄로 카카오톡 대화방에서 2021년에 제일 메세지를 많이 보낸 TOP 3명 추출하기!
-> cat KakaoTalk_Chat.csv cut -d , -f 2 sort uniq -c sort tail -n 3

8강 Docker

  • 가상화

개발할 때 Local 환경에서 하고 이를 Product 서버에 배포한다

이때 Local 과 Product 환경이 다를 수 있다.

운영하고 있는 server 가 100대 라면? 업데이트 관리 필요

-> 특정 소프트웨어 환경을 만들고 local, Production 서버에서 그대로 활용

  • Docker 등장 전

VM(virtual machine) 사용

OS 위에 OS 를 하나 더 실행 시켜서 무거웟음

-> 이를 해결하기 위해 나온 Container : 경량화된 가상화 프로세스 기술

  • Docker Container 기술 쉽게 사용할 수 있도록 나온 도구

-> 다른 사람이 만든 소프트웨어(Docker Image)를 가져와서 바로 사용 가능

주요 개념 2개

1) Docker Image

컨테이너를 실행할 때 사용하는 탬플릿 (Read only)

-> OS, 설정을 포함한 개발 환경

2) Docker Container

Docker image를 활용해 실행된 인스턴스 (write 가능)

image-20221112211407738

실습

이미지 다운받아 사용하기

  • docker pull

  • docker images

  • docker run “이미지이름:태그”

-d -> 데몬(백그라운드) 모드, 이거 안하면 컨테이너 나가면 실행 종료됨

-p 로컬호스트포트:컨테이너포트 -> 포트 지정

-v -> Volume Mount

image-20221112222827430

ex) docker run -it -p 8888:8888 -v /some/host/folder/for/work:/home/jovyan/workspacejupyter/minial-notebook

  • docker ps

-a : 작동을 멈춘 컨테이너 확인

  • docker exec -it “컨테이너 이름(혹은 ID)” /bin/bash

  • docker rm “컨테이너 이름”

image-20221112221027261

  • dockerhub에서도 공개된 image들 다운받아 쓸 수 있음

Docker Image 만들기

  • Fast api 패키지 설치, 코드 작성
  • 사용한 라이브러리 명시 pip freeze : 설치한 라이브러리를 모두 보여줌

pip list –not-required –format=freeze : 의존성에 따라 설치된 라이브러리는 보이지 않음

  • Dockerfile 작성

댓글남기기