Boostcamp AI Tech 4기 11월 11일 학습정리 : AI 서비스 개발 기초 4 (7강)

유상준·2022년 11월 11일
1

리눅스에 대한 기초 개념과 유용하게 자주 쓰이는 쉘 커맨드에 대해서 정리해보자


7강 Linux

왜 Linux를 알아야 하냐?

  • 서버에서 자주 이용한다
    • Mac, Window도 서버로 활용 가능하나 유료이기 때문에 무료라는 점에서 Linux가 사용하기 좋다
  • 오픈소스이기 때문에 확장 가능한 장점
  • 오래 됐기 때문에 안정성이 높고, 많은 사람이 사용했기 때문에 신뢰도가 높다
  • 쉘 커맨드나 쉘 스크립트도 사용할 수 있다.

CLI : Command Line Interface
Username@Hostname

GUI : Graphic User Interface
(ubuntu 이용해서 vmware 상에서 GUI 사용해본 경험으로 이해)

대표적인 Linux 배포판

  • Debian
    온라인 커뮤니티에서 제작해 배포

  • Ubuntu
    영국의 캐노니컬에서 배포한 버전, 쉽고 편한 설치
    초보자들이 쉽게 접근할 수 있게

  • Redhat
    레드햇에서 배포한 버전

  • CentOS
    Redhat이 공개한 버전을 가져와서 브랜드, 로고 제거 한 버전

Linux, Shell Script 학습을 하려면..

  • 자주 사용하는 쉘 커멘드, 스크립트 위주로 학습하다가 필요한 코드가 생기면 검색하기
  • 새로운 커맨드가 나오면 학습해서 정리하기
  • 배경지식이 필요한 경우 Linux, OS(커널) 공부가 필요할 수도 있다.

Linux 사용 방법

  • VirtualBox에 Linux 설치, Docker로 설치
  • 맥은 리눅스 환경과 유사해서 터미널상에서 바로 실행 가능
  • Notebook에서도 터미널 실행하면 가능

쉘의 종류


  • 사용자가 문자를 입력하여 컴퓨터에 명령할 수 있도록 해주는 프로그램
  • 터미널/콘솔
    쉘을 실행하기 위해 문자 입력을 받아 컴퓨터에 전달
    프로그램의 출력을 화면에 작성
  • sh
    최초의 쉘
  • bash
    Linux 표준 셀
    (서버에서 주로 사용)
  • zsh
    Mac 카탈리나 OS 기본 쉘
    (맥북에서 주로 사용)

host의 개념이 자주 등장하는데, host는 우리가 기억하기 쉬운 글자로 저장해서 로그인할 때 컴퓨터 이름을 저장하는 개념과 유사하다.

쉘을 사용하는 경우

  • 서버 접속해서 사용하는 경우
  • crontab등 Linux 내장 기능 활용하는 경우
  • 데이터 전처리를 하기 위해서 사용하기도 함 (파일이 저장되면 바로 파일을 처리할 수 있도록 해줄 수 있다.)
  • Docker 사용하는 경우
  • 수백대의 서버를 관리할 경우
  • Jupyter Notebook Cell앞에 !를 붙이면 쉘 커맨드가 사용된다
  • 터미널에서 python3, jupyter notebook 이라고 명령하는 것도 쉘 커맨드
  • Test Code 실행
  • 배포 파이프라인을 실행(Github Action등에서)

기본 쉘 커맨드

  1. man
    manual을 보기 위한 명령어 ex) man python3

  2. mkdir
    make directory의 줄임말, 폴더 만들기

  3. ls
    현재 접근한 폴더의 폴더나 파일을 확인한다. (List Segments)
    옵션
    -a : .으로 시작하는 파일,폴더를 포함해 전체 파일 출력
    -l : 퍼미션, 소유자, 만든 날짜, 용량까지 출력
    -h : 용량을 사람이 읽기 쉽도록 GB, MB로 변환해서 표현해줌. 보통은 ‘-l’ 명령어와 같이 사용

  4. pwd
    현재 폴더 경로 알려줌 (print working directory)

  5. cd
    폴더 변경, 이동하기 (change dicectory)

  6. echo
    python에서의 print 역할
    터미널에 텍스트를 출력해준다
    echo “hi”
    `(backtick) 을 이용한 쉘 커맨드의 결과를 출력할 수도 있음

echo `pwd`
  1. vi
    vim 편집기로 파일 생성
    INSERT 모드에서만 수정 가능

Mode

    1. Command Mode
      기본 Mode, 방향키로 커서 이동 가능
      i를 누르면 INSERT 모드로 변경
      여러가지 단축키가 존재함
    1. Insert Mode
      파일 수정 가능한 mode
      ESC 입력해서 Command Mode로 이동 가능
    1. Last Line Mode
      ESC 누른 후, 콜론(:)을 누르면 나오는 Mode
      w : 현재 파일명으로 저장
      q : vi 종료 (저장 x)
      q! : vi 강제 종료 (!는 강제의 의미)
      wq : 저장후 종료
  1. bash
    bash로 쉘 스크립트를 실행한다.
    터미널에서 Tab을 누르면 자동완성

  2. sudo
    관리자 권한으로 실행하고 싶은 경우 커맨드 앞에 sudo를 붙인다. (superuser do에서 유래)
    조심히 사용해야 한다.

  3. cp
    Copy에서 유래

  4. mv
    Move에서 유래
    이름 바꾸거나 파일 폴더를 이동할 때 자주 사용
    mv 바꾸기전파일 바꾸고싶은파일
    ex) mv vi-test.sh vi-test3.sh

  5. cat
    특정 파일 내용을 출력 : concatenate
    여러 파일을 인자로 줘서 합쳐서 출력 가능
    cat vi-test.sh vi-test2.sh

  6. clear
    터미널창 청소

  7. history
    쉘 커맨드 history 출력
    history 결과에서 느낌표를 붙이고 숫자를 입력하면 그 숫자에 해당하는 커맨드를 다시 활용할 수 있다.
    ex) !30 과 같은 방법으로 30번째 줄에 있는 명령어를 반복적으로 사용 가능하다

  8. find
    파일, 폴더를 검색할 때 사용
    find . -name “File” : 현재 폴더에서 File이란 이름의 파일,폴더 검색

  9. export
    export로 환경 변수를 설정할 수 있다.
    export water=’물’
    echo $water
    출력 → ’물’
    터미널이 꺼지면 자동으로 사라지게 된다.
    저장하고 싶으면 .bashrc or .zshrc에 저장

  10. alias
    현재 별칭으로 설정된 것을 볼 수 있음
    별칭을 만들 수도 있음
    ex) ll은 ls -l이 별칭으로 지정되어있음
    ex) jupyter notebook을 jn으로 별칭 저장하면 jn으로 켤 수 있다.

  11. head, tail
    앞/뒤에서 n번째 행까지 출력
    tail : log 볼 때 많이 사용 함

  12. sort
    행 단위 정렬
    -r : 내림차순 정렬
    -n : Numeric Sort

  13. uniq
    중복행이 여러개 있으면 중복 제거
    -c : 중복 행의 개수 출력

  14. grep
    grep “옵션” “패턴” “파일명” 으로 사용하여 파일에 주어진 패턴 목록과 매칭되는 라인을 검색한다

  15. cut
    파일에서 특정 필드 추출
    -f : 잘라낼 필드 지정
    -d : 필드를 구분하는 구분자. Default는 \t

  16. ps
    현재 실행되고 있는 작업들 보여준다. (Process Status)
    -e : 모든 작업을 보여줘라

  17. curl
    웹서버를 작성한 후 제대로 요청이 실행되는지 확인 가능 (Request를 Test할 수 있는 명령어)

  18. df
    사용중인 디스크 용량 확인 (Disk Free)

  19. scp
    SSH을 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어 (Secure Copy)
    -r : 재귀적으로 복사
    -P : ssh 포트 지정
    -i : SSH설정을 활용해 실행

  20. nohup
    터미널 종료 후에도 계속 작업이 백그라운드에서 유지하도록 실행
    nohup python3 app.py&

nohup으로 실행될 파일은 Permission이 755여야한다.

종료는 ps ef | grep app.py 로 app.py의 pid (Process ID)를 찾은 후에 kill -9 pid로 프로세스를 Kill 해주면 된다.
로그는 nohup.out에 저장된다.

표준 스트림

  • Redirection
    '>' : 덮어쓰기
    '>>' : 맨 아래에 추가하기
  • Pipe (| : Shift + )
    프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우
    다양한 커맨드를 조합할 수 있다.
    ex) ls | grep “vi”
    → 현재 디렉토리에서 vi라는 단어가 들어간 파일이나 폴더를 찾아라
    ex) ls | grep “vi” > output.txt
    → 위에서 실행한 결과를 다시 output.txt에 덮어씌워라(저장해라)
    ex) history | grep “echo”
    → 최근 입력한 커맨드 중에서 echo가 들어간 명령어를 찾고 싶을 때

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


위 게시글의 내용은 Boostcamp AI Tech 4기 강의내용(변성윤 마스터님)을 참고하여 작성하였습니다.

profile
데이터 사이언티스트 지망생

0개의 댓글