리눅스 기본 사용법

YunGyu Choi·2023년 1월 25일
0

리눅스 기본 사용법

리눅스와 파일

  • 모든 것은 파일이라는 철학을 따른다.
    • 모든 상호작용은 파일을 읽고, 쓰는 것 처럼 이루어져 있다.
    • 마우스, 키보드와 같은 하드웨어도 파일이라고 생각하고 처리한다.

  • 파일 네임 스페이스
    • 전역 네임 스페이스 사용 : 전체 파일이 root ➡️ / 디렉토리 안래 있다.

쉘 종류

  • 쉘(shell) : 사용자와 컴퓨터 또는 운영체제간의 인터페이스
    • 사용자의 명령을 해석해서 커널에 명령을 요청해준다.
    • 관련된 시스템 콜을 사용해서 프로그래밍이 작성되어 있다.
  • Bourne-Again Shell(bash) : Linux에서 쓴다.
  • Bourne Shell(sh) : Docker에서 쓴다.
  • Korn Shell(ksh) : Unix에서 쓴다.
  • (zsh) : macOS에서 쓴다.

리눅스 기본 명령어 정리

  • clear : 앞단에 보이는 것을 깔끔하게 정리하기
  • whoami : 자기 아이디 조회하기
  • sudo <명령> : 관리자 권한으로 명령 실행하기
    • root가 슈퍼관리자ID이지만 슈퍼관리자로 사용하지 않는다.
    • 리눅스는 한대의 컴퓨터에 여러명이 접속해서 쓰는 건데 루트계정으로 접속해서 작업하다가 실수하면 회복하기 어렵기 때문이다.
    • sudo apt-get update : 패키지 업데이트
  • pwd : 현재 디렉토리 위치 조회하기
  • cd : 디렉토리 바꾸기
  • ls : 현재 디렉토리 내 파일목록 조회하기
    • ls -al : 숨김 파일까지 조회하기
    • 리눅스는 파일마다 소유자/소유자그룹/모든사용자에 대해
      읽고(r), 쓰고(w), 실행(x)하는 권한을 나누어서 관리한다.
  • chmod <3자리> <3자리> <3자리> 파일or폴더명 : 파일 권한 변경
    • 3개의 권한을 2진수로 계산해서 8진수로 표현한다.
      • rwxrwxrwx = 777
      • r-xr-xr-x = 555
      • r-------- = 400
  • cat <파일명> : 파일보기
  • rm <파일or폴더명> : 파일 및 폴더 삭제하기
    • -r옵션 : 하위 디렉토리를 포함한 모든 파일 삭제하기
    • -f옵션 : 강제로 파일이나 디렉토리 삭제하기
      (-rf로 한꺼번에 같이 옵션 줄수도 있다.)
    • ❗️리눅스에는 휴지통이 없으니 신중하게 지워야한다.
  • grep [-옵션] [패턴] [파일or폴더명]
    • <옵션>
      • i : 영문의 대문자를 구별하지 않는다.
      • v : 패턴을 포함하지 않는 라인을 출력한다
      • n : 검색 결과의 각 행의 선두에 행 번호를 넣는다
      • l : 파일명만 출력한다.
      • c : 패턴과 일치하는 라인의 개수만 출력한다.
      • r : 하위 디렉토리까지 검색한다.

리다이렉션과 파이프

표준 입출력(Standard Stream)

  • command로 실행되는 프로세스는 세가지 스트림을 가지고 있다.
    • stdin : 표준 입력 스트립
    • stdout : 표준 출력 스트림
    • stderr : 오류 출력 스트림
  • 모든 스트림은 일반적인 plain text로 console에 출력하도록 되어 있다.

리다이렉션

  • 표준 스트림 흐름을 바꿔줄 수 있다.
    • >, <를 사용한다.
  • 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용한다.

  • 기존 파일에 추가는 >> 또는 <<를 사용한다.
    • 예시) ls >> files.txt
      기존에 있는 파일 끝에 ls출력 결과를 추가
  • 도커를 실행하고 나서 특정 결과를 파일에 저장할 때 사용한다.

파이프

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


프로세스 관리

프로세스 vs 바이러니

  • 코드이미지 또는 바이너리 ➡️ 실행파일
  • 실행중인 프로그램 ➡️ 프로세스
    • 가상 메모리 및 물리 메모리 정보
    • 시스템 리소스 관련 정보
    • 스케쥴링 단위
  • 리눅스 모체인 유닉스의 철학이 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하는 것이기 때문에 리눅스는 기본적으로 다양한 프로세스가 실행된다.

프론트 그라운드 vs 백 그라운드

  • 프론트 그라운드 프로세서
    쉘에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스
    (해당 프로세스 작업 취소 : ctrl + c)
  • 백 그라운드 프로세서
    사용자 입력과 상관없이 실행되는 프로세스

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

  • 사용법 : ps [option(s)]
    • -a : 시스템을 사용하는 모든 사용자의 프로세스 출력
      (보통 aux와 같이 u, x 옵션과 함께 사용)
    • -u : 프로세스 소유자에 대한 상세 정보 출력
    • -l : 프로세스 관련 상세 정보 출력
    • -x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들로 주로 데몬 프로세스(24시간 돌아가는 프로세스)까지 확인하기 위해 사용
      (본래 ps명령은 현제 쉘에서 실행한 프로세스들만 보여주기 때문에 이 옵션을 사용하는 경우가 많음)
    • -e : 해당 프로세스와 관련된 환경변수 정보도 함께 출력
    • -f : 프로세스 간 관계 정보도 출력
  • 주요 -ps 명령어 출력 항목
    • USER : 프로세스를 실행시킨 사용자 ID
    • PID : 프로세스 ID
    • %CPU : 마지막 1분 동안 프로세스가 사용한 CPU시간의 백분율
    • %MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율
    • VSZ : 프로세스가 사용하는 가상 메모리 크기
    • RSS : 프로세스에서 사용하는 실제 메모리 크기
    • STAT : 프로세스 상태
    • START : 프로세스가 시작된 시간
    • TIME : 현재까지 사용된 CPU 시간(분:초)
    • COMMAND : 명령어

프로세스 중지시키기

  1. kill %작업번호
  2. kill 프로세스ID
  3. 작업강제옵션 -9
    • 예시) # find/ -name '*.py'> list.txt &
      [1] 57
      # kill -9 57

주로 사용하는 프로세스 명령

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

하드링크와 소프트링크

  • 파일 복사 : cp A B
    • 1MB 사이즈를 가지고 있는 A파일을 B파일로 복사
      (A와 B는 내용은 같지만 다른 파일을 가리킨다.)
    • 폴더 복사 : cp -fr * 폴더명
  • 하드 링크 : In A B
    • A와 B는 다른 이름이지만 동일한 파일을 가리킨다.
    • 즉, 동일한 파일을 가진 이름을 하나 더 만드는 것
      (전체 파일 용량은 달라지지 않음)
  • 소프트 링크(심볼릭 링크) : In-s A B
    • WindowOS의 바로가기와 비슷
      (원래 파일에 비해 작은 용량)
    • ls -al하면, 소프트링크 확인 가능
    • rm A로 A를 삭제하면 B는 해당 파일에 접근 불가능

우분투 패키지 관리

  • 데미안 계열
  • 배포판 마다 명령어 차이 존재

ubuntu 패키지 관리 실무

  • ubuntu 패키지 인덱스 정보 업데이트
    sudo apt-get update
  • 설치된 ubuntu 패키지 업그레이드(함부로x)
    sudo apt-get upgrade
  • 패키지 설치
    sudo apt-get install [패키지명]
  • 패키지 삭제(설정파일 제외)
    sudo apt-get remove [패키지명]
  • 패키시 작세2(설정파일 포함)
    sudo apt-get --purge remove [패키지명]

ubuntu 20.04에서 docker설치

  1. 최신 패키지 리스트 업데이트
    sudo apt update
  2. docker 다운로드를 위해 필요한 https 관련 패키지 설치
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. docker repository 접근을 위한 GPG key 설정
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. docker repository 등록
    sudo add-apt-repository "deb [arch=amd64] http://download.docker.com/linux/ubuntu focal stable"
  5. 등록한 docker repository까지 포함하여 최신 패키지 리스트 업데이트
    sudo apt update
  6. docker 설치
    sudo apt install docker-ce
  7. docker 실행 중임을 확인
    sudo systemctl status docker

sudo 명령 없이 docker 명령어 사용하기 설정

  1. 현사용자 ID를 docker group에 포함
    sudo usermod -aG docker ${USER}
  2. 터미널 끊고, 다시 ssh로 터미널 접속(로그인 다시하는 것)
  3. 현 ID가 docker group에 포함되어 있는지 확인하는 명령
    id -nG
  4. 이제 sudo 없이 docker 명령을 바로 내릴 수 있음
    docker

ubuntu 20.04에서 docker-compose설치

  1. release page에서 최신 버전 확인 후, 다음 링크에서 버전 (1.28.2)변경
    sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. 실행 권한 주기
    sudo chmod +x /usr/local/bin/docker-compose
  3. 다음 명령 실행시 버전 확인이 가능하면, 성공
    docker-compose --version





참조

profile
velog에는 이론을 주로 정리하고, 코드와 관련된 것은 Git-hub로 관리하고 있어요. 포트폴리오는 링크된 Yun Lab 홈페이지를 참고해주시면 감사하겠습니다!

0개의 댓글