Home [BoostCamp AI Tech / Level 3 - Product Serving] Day18 - Linux & Shell Command
Post
Cancel

[BoostCamp AI Tech / Level 3 - Product Serving] Day18 - Linux & Shell Command

Product Serving : Linux & Shell Command


Shell

쉘의 종류

  • 쉘 : 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램
  • 터미널/콘솔 : 쉘을 실행하기 위해 사용자 입력을 받아 컴퓨터에 전달
  • sh : 최초의 쉘
  • bash : Linux 표준 쉘
  • zsh : Mac OS Catalina 표준 쉘

쉘을 사용하는 경우

  • 서버에서 접속해서 사용하는 경우
  • 데이터 전처리를 위해 쉘 커맨드를 사용
  • Docker를 사용
  • 수백대의 서버를 관리
  • Test code 실행
  • 배포 파이프라인 실행

Shell Command

man

1
man python
  • 쉘 커맨드의 매뉴얼 문서를 확인
  • 종료는 :q 입력

Directory commmand

  • mkdir
    1
    
      mkdir test
    
    • test라는 이름의 폴더를 생성
  • ls
    1
    2
    3
    4
    
      ls
      ls -l
      ls -al
      ls -lh
    
    • 현재 접근한 폴더의 폴더, 파일을 확인
    • 실행 옵션
    • -a : . 포함 모든 파일, 폴더를 출력
    • -l : 권한, 소유자, 만든 날짜, 용량까지 출력
    • -h : 용량을 사람이 읽기 쉽도록 GB, MB로 표시
  • pwd
    1
    
      pwd
    
    • 현재 폴더 경로 (Current Working directory)를 보여줌
  • cd
    1
    
      cd test
    
    • 폴더 변경, 폴더 이동

I/O Command

  • echo
    1
    2
    
      echo "hi"
      echo `pwd`
    
    • print처럼 터미널에 텍스트를 출력
    • echo `command`를 입력하면 쉘 커맨드의 결과를 출력
  • vi
    1
    
      vi test.txt
    
    • vim 편집기로 파일 생성
    • i를 눌러 INSERT 모드를 활성화하고 수정
    • ESC를 누르고 :wq를 누르면 저장하고 나가기
      • :wq!는 강제저장 후 나가기
      • :q는 그냥 나가기

Shell Command

  • bash
    1
    
      bash test.sh
    
    • shell script를 bash를 통해 실행
  • sudo
    1
    
      sudo rm -rf /
    
    • 관리자 권한으로 실행하는 경우 sudo를 붙여서 실행
    • superuser do의 약자로 최고 권한자의 권한으로 명령어를 수행함
  • cp, mv
    1
    2
    
      cp test.sh vi-test2.sh
      mv test.sh vi-test3.sh
    
    • cpmv는 둘다 비슷하게 사용함
    • cp는 파일이나 폴더를 복사함
      • 폴더를 복사할 때는 옵션으로 -r을 사용해야 함
    • mv는 파일, 폴더를 이동할 때 쓰지만 이름을 바꿀때도 사용함
  • find
    1
    
      find . -name "File"
    
    • 현재 폴더에서 File이란 이름을 갖는 파일 및 디렉토리 검색
  • export
    1
    2
    
      export water="물"
      echo $water # 물
    
    • export로 환경 변수를 설정
    • export로 환경 변수 설정한 경우 터미널이 꺼지면 사라짐
    • 매번 쉘을 실행할 때 설정하려면 .bashrc.zshrc에 저장하면 됨
    • 내용을 저장하고 source ~/.bashrcsource ~/.zshrc를 수행하면 적용됨
  • alias
    1
    
      alias ll2='ls -l'
    
    • alias는 명령어들을 간단히 줄여 단축 키워드처럼 사용하게 해줌

ETC command

  • sort
    1
    
      cat fruits.txt | sort
    
    • 내용을 오름차순으로 정렬
    • -r 옵션은 내림차순 정렬
  • uniq
    1
    2
    
      cat fruits.txt | uniq
      cat fruits.txt | sort | uniq
    
    • 중복된 행이 연속으로 있는 경우 중복 제거
    • 일반적으로 sort와 함께 사용
    • -c 옵션은 중복 행의 개수 출력
  • grep
    1
    
      grep [option] [pattern] [filename]
    
    • 특정 정규표현식에 맞는 라인을 검색
    • options
      • -i : insnsitively, 대소문자 구분없이
      • -w : 정확하게 그 단어만 찾기
      • -v : 특정 패턴 제외한 결과 출력
      • -E : 정규 표현식 사용

Server command

  • ps
    1
    
      ps -ef
    
    • 현재 실행되고 있는 프로세스 출력
    • options
      • -e : 모든 프로세스
      • -f : Full Format으로 자세히 보여줌
  • curl
    1
    
      curl -X localhost:5000/{data}
    
    • httpie등 여러가지가 있고 더 가독성 좋게 출력해줌
    • REST API 기반 request를 테스트 가능
  • scp
    1
    2
    
      scp local_path user@ip:remote_directory # local -> remote
      scp user@ip:remote_directory local_path # remote -> local
    
    • SSH를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어
    • options
      • -r : 재귀적으로 복사
      • -P : ssh 포트 지정
      • -i : SSH 설정을 활용해 실행
  • nohup
    1
    
      nohup python3 app.py &
    
    • 터미널 종료 후에도 계속 작업이 유지되도록 백그라운드 실행
    • 실행을 위해선 permission이 755여야 함
    • 종료는 ps -ef | grep app.pykill -9 pid로 프로세스 kill
    • 로그는 nohup.out에 저장
  • chmod
    1
    
      chmod [filename] [mode]
    
    • 특정 파일의 mode를 설정 3자리 숫자로 모드는 표현되며 각자리는 2진수 3비트로 Read, Write, Execution 역할을 함
    • 일반적으로 755, 644로 퍼미션을 줌

Shell Script

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
START=$(date + %s)

echo "Calculate run-time"

sleep 3

END=$(date + %s)
DIFF_SECOND=$(( $END-$START ))
DIFF_MINUTE=$(( $DIFF_SECOND / 60 ))

echo ${DIFF_SECOND}
  • .sh 확장자 파일로 돌아감
  • 쉘 커맨드가 동작하며 bash 명령어로 수행가능
This post is licensed under CC BY 4.0 by the author.

[BoostCamp AI Tech / Level 3 - Product Serving] Day18 - ML Project Life Cycle

[BoostCamp AI Tech / Level 3 - Product Serving] Day18 - Docker

Comments powered by Disqus.