프로그래밍 언어

도커를 위한 리눅스 사용법

eunsour 2021. 6. 17.
반응형

리눅스와 파일

  • 모든 것은 파일이라는 철학을 따름
    • 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있음
    • 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐
  • 파일 네임스페이스

 

쉘 종류

  • 쉘(shell) : 사용자와 컴퓨터 하드웨어 또는 운영체제간 인터페이스
    • 사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할
    • 관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있다.
    • Bourne-Again Sheel (bash) : GNU 프로젝트의 일환으로 개발됨, 리눅스 거의 디폴트임
    • Bourne Shell (sh)
    • C Shell (csh)
    • Korn Shell (ksh) : 유닉스에서 가장 많이 사용됨

 

리눅스 기본 명령어 정리

  • 리눅스 명령어는 결국 쉘이 제공하는 명령어
  • 리눅스 기본 쉘이 bash 이므로, bash에서 제공하는 기본 명령어를 배우는 것

 

whoami : 로그인한 사용자 ID를 알려줌

 

sudo 명령어 : root 권한으로 실행하기

  • root 계정으로 로그인 하지 않은 상태에서 root 권한이 필요한 명령을 실행할 수 있도록 하는 프로그램
  • 기본 사용법
    • 사용 예 : sudo apt - get update

 

pwd : 현재 디렉토리 위치

 

ls : 파일 목록 출력

  • ls -al : 숨김 파일을 포함한 모든 하위 파일들을 출력

 

cat : 파일 보기

# 파일 내용이 출력됨
# cat mysql.cnf 
mysql.cnf 

 

rm : 파일 및 폴더 삭제

  • 주로 사용하는 명령어 형태 : rm -rf 디렉토리명
  • r 옵션 : 하위 디렉토리를 포함한 모든 파일 삭제
  • f 옵션 : 강제로 파일이나 디렉토리 삭제
rm myslq.cnf

 

Standard Stream (표준 입출력)

  • command로 실행되는 프로세스는 세 가지 스트림을 가지고 있음
    • 표준 입력 스트림 (Standard Input Stream) - stdin
    • 표준 출력 스트림 (Standard Output Stream) - stdout
    • 오류 출력 스트림 (Standard Error Stream) - stderr
  • 모든 스트림은 일반적인 plain text로 console에 출력되도록 되어있음.

 

리다이렉션 (redirection)

  • 표준 스트림 흐름을 바꿔줄 수 있다.
    • , < 을 사용함
    • 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때
  • 기존 파일에 추가는 >> 또는 << 사용
    • ls >> files.txt
    • 기존에 있는 files.txt 파일 끝에, ls 출력 결과를 추가해 줌
  • 도커를 실행하고 나서 특정 결과를 파일로 저장하고 싶을 때 사용 가능

 

파이프 (pipe)

  • 두 프로세스 사이에서 한 프로세스의 출력 스트림을 또 다른 프로세스의 입력 스트림으로 사용할 때 사용됨

 

파이프 (pipe) 예

  1. ls | grep files.txt
    • ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어감
    • grep files.txt는 grep 명령의 입력 스트림을 검색해서 files.txt가 들어 있는 입력 내용만 출력해줌
    • 따라서, ls 명령으로 해당 디렉토리 / 파일 중에 files.txt 파일이 있는지를 출력해줌

프로세스 vs 바이너리

  • 코드 이미지 또는 바이너리 : 실행 파일
  • 실행 중인 프로그램 : 프로세스
    • 가상 메모리 및 물리 메모리 정보
    • 시스템 리소스 관련 정보
    • 스케쥴링 단위

 

리눅스는 다양한 프로세스 실행 환경

  • 리눅스는 기본적으로 다양한 프로세스가 실행됨
    • 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델

 

foreground process / background process

  • foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스
  • background process : 사용자 입력과 상관없이 실행되는 프로세스
    • 쉘(shell)에서 해당 프로세스 실행시, 맨 뒤에 &를 붙여줌
    • 사용 예
    • find / -name '*.py' > list.txt & [1] 57
    • [1] 은 작업 번호 (job number), 57은 pid (process ID) 를 나타냄

 

foreground process 제어하기

  • [CTRL] + c : 프로세스 작업 취소 (해당 프로세스는 완전히 종료)

 

프로세스 상태 확인 - ps 명령어

  • 사용법 : ps [option(s)]
  • 데몬 프로세스 (daemon process) : daemon은 악마를 의미함. 사용자 모르게 시스템 관리를 위해 실행되는 프로세스로 보통 시스템이 부팅될 때 자동 실행 (예: ftpd, inetd 등)

 

프로세스 중지 시키기

  • kill 명령어
    • 사용법
      1. kill % 작업 번호
      2. kill 프로세스 ID (pid)
      3. 작업 강제 종료 옵션 -9
      find / -name '*.py' > list.txt & kill -9 57​

주로 사용하는 프로세스 명령 (적어도 이 명령은 편하게 사용해야 함)

  • ps aux | grep 프로세스 명 : 프로세스가 실행 중인지를 확인하고, 관련 프로세스에 대한 정보 출력
  • kill -9 프로세스 ID (pid) : 해당 프로세스를 강제로 죽임
  • 명령 & 터미널에서 다른 작업을 해야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 background로 실행
  • [CTRL] + c : 프로세스 종료 (실행 취소)

 

하드 링크와 소프트 링크

  • cp 명령 : 파일 복사
    • 1MB 사이즈를 가지고 있는 A 파일을 B 파일로 복사
      • cp A B → A 와 B는 각각 물리적으로 10MB 파일로 저장
    • 하위폴더 포함 복사하기
      cp -rf * 폴더명​
  • 하드 링크 : ln A B
    • A 와 B는 동일한 10MB 파일을 가리킴
    • 즉, 동일한 파일을 가진 이름을 하나 더 만든 것일 뿐
      • 전체 파일 용량은 달라지지 않음

 

  • 소프트 (심볼릭) 링크 : ln -s A B
    • Windows OS의 바로가기와 동일
    • ls -al하면, 소프트 링크 확인 가능
    lrwxr-x-r-x link3.txt -> link2.txt​

    • rm A로 A를 삭제하면? B는 해당 파일 접근 불가

 

ubuntu 배포판

  • 다양한 배포판 중 하나
  • 데비안 배포판을 기반으로 캐노니컬 사가 우분투 배포판 개발
    • 데비안 배포판은 apt 프로그램을 이용해서 소프트웨어 설치 및 업데이트를 간편하게 한 패키지
  • 우분투 의미 : 남아프리카 부족 언어로 '너가 있으니 나도 있다'라는 의미
    • 우분투 데스크탑 배포판 (X윈도우 기반, GUI 환경 제공)과 우분투 서버 배포판, 두 가지 기본 배포판을 제공
    • 지원 기간이 짧은 일반 버전과 지원 기간이 장기(5년)인 LTS(Long Term Support) 버전으로 나눠서 발표

 

ubuntu 패키지 관리자

  • CentOS나 Fedora와 같은 RedHat 계열 배포판은 RPM 이라는 패키징 시스템을 이용함
  • ubuntu와 같이 데비안 계열 배포판은 deb 이라는 패키징 시스템을 이용한
  • 패키지와 패키지 정보를 저장하고 있는 패키지 저장소라는 개념을 가지고 있음
  • 소프트웨어 패치, 추가 등 정보를 관리
  • 우분투 사용자가 패키지 관리자를 통해 패키지 저장소에 접근하면, 소프트웨어 변경 사항을 알려주고 업데이트, 다운로드 등을 지원

 

 

ubuntu 패키지 관리 실무

  • ubuntu 패키지 인덱스 정보 업데이트 (배포판 버전에 따른 패키지 업데이트 버전 정보 등)
sudo apt-get update
  • 설치된 ubuntu 패키지 업그레이드 (함부로 사용 X)
sudo apt-get upgrade
  • 패키지 설치
sudo apt-get install 패키지명
  • 패키지 삭제 (설정파일 제외)
sudo apt-get remove 패키지명
  • 패키지 삭제 (설정파일 포함)
sudo apt-get --purge remove 패키지명

 

VIM 에디터 이해 및 설치

  • VIM : Vi improved 에서 앞 글자를 빼내어 만든 이름
    • Vi : 전통적인 유닉스 에디터(개발자 : 빌 조이), Visual Editor의 줄임말
    • Vim은 Vi에 자동화, 시각화 메뉴 등을 추가한 프로그램
    • Vim 이외에 이맥스(Emacs, GNU 프로젝트 설립자 리차드 스톨만이 개발) 라는 유명한 에디터가 있음(대부분 개발자는 두 에디터 중 하나를 사용함)

 

vim 네 가지 모드

  • 일반(명령) 모드 : 처음 vim을 실행했을 때 또는 입력 모드/명령 모드에서 ESC 입력 시 - 찾기, 커서 이동 등
  • 명령(명령행) 모드 : 일반 모드에서 : 입력시 - 저장, 파일 읽기, vim 설정 등
  • 입력 (편집) 모드 : 일반 모드에서 a 또는 i 또는 o 키 입력 시 - 내용 입력
  • Visual 모드 : 일반 모드에서 v 입력 시 - 블럭 복사/붙이기

 

 

 

 

 

반응형

댓글