9일차 - Base learning (리눅스 기초)

Jk Lim·2023년 4월 20일
0

MLOps 부트캠프

목록 보기
8/34

9일차는

  1. 리눅스의 기본적인 디렉토리 구조와
  2. 파일/디렉토리 관련 명령어를 학습하였다.

1. 리눅스 디렉토리

linux directory structure and important files paths explained

  • bin : 명령어가 저장되는 디렉토리
  • sbin : 시스템에서 사용할 수 있는 명령어만..
  • etc : Config 파일이면서, 전체 사용자에게 영향을 주는 설정파일이 담겨있음
  • dev : 운영체제 레벨에서 논리적으로 (하드웨어) 장치를 제어하는 영역 (커널영역의 제어 영역은 보이지 않음 - 커널 영역이니까. UNIX에서는 가능)
  • proc : 프로세스 관련 정보. proc 정보는 커널이 제공하는데 왜곡이 없어서 깔끔하고 믿을 수 있는 데이터를 얻을 수 있다.
  • tmp : 개별 프로그램들이 동작할 때 생기는 임시 파일을 저장하는 공간. 다운로드 받을 중에 저장되는 공간. 사용자 각자의 권한으로 Write를 할 수 있어야 함.
  • var : 운영체제가 동작하는 과정에서 바뀌는 값을 저장하는 공간. 예)로그, 메일, 프린터 명령 순서 파일 (tmp는 개별 프로그램, var는 운영체제)
  • usr : 응용프로그램이 설치되는 위치. 사용자 프로그램 (윈도우의 Program files)
  • home : 개발자들이 파일을 주로 업로드 하는 위치. 호스팅 업체
  • boot : 부팅 관련 파일
  • lib : 라이브러리
  • opt : 3rd-party 프로그램 파일이 설치되는 곳. 예)오라클 등
  • mnt : 마운트 포인트 직접 설정
  • media : USB, 플로피 디스크, CD-ROM 이 연결되는 폴더 (이 세가지는 media로 오토 마운팅 됨)
  • srv : 서비스 데이터 저장. 비교적 최근에 만들어진 리눅스 디렉토리.

2. 디렉토리 관련 명령어

  • 절대경로 : root(/) 기준으로 전체 경로를 명시하는 방법
  • 상대경로 : 현재를 기준으로 경로를 명시
  • 현재 디렉토리는 .으로표시
  • 상위 디렉토리는 ..으로 표시

cd 명령어

  • 현재 사용자 계정의 홈 디렉토리로 이동하려면 cd만 입력
  • 이전 디렉토리로 이동은 - 사용
  • 특정 계정의 홈 디렉토리로 이동하려면 ~user명 사용 (공백시 현재 사용자)

(참고) which/rpm 명령어 : 관련 패키지 정보를 조회할 수 있음

  • which : 현재 사용하고 있는 명령어 실행 파일의 위치를 알 수 있다.
  • rpm q : 패키지 정보 확인 옵션 (f : 이 경로 파일들이 어떤 패키지랑 연관이 되어 있는지 확인 / l : 이 패키지에 어떤 파일들이 포함되어있는지 / i : 패키지 설명 확인)
  • man은 매뉴얼 파일
  • rpm 명령어는 Redhat 계열의 리눅스에서 사용 가능한 명령어
  • 다른 PC에 어떤 파일이 실행이 안될 때, 어떤 패키지가 설치되어있는지 확인하고 Trouble Shooting 하는 용도로 활용 할 수 있다.

ls 명령어

  • ls -l 명령어 : 해당 디렉토리의 정보 (사진의 세번째 행을 기준으로 설명)
  • 첫번째 열 : 파일의 속성
    • d : 디렉토리 / - : 파일
    • rwx (앞의 세자리) : 파일의 소유자(세번째 열 root)가 가지는 권한
    • r-x (다음 세자리) : 그룹(네번째 열 root)이 가지는 권한
    • r-x (다음 세자리) : 소유자와 그룹을 제외한 Other가 가지는 권한
      (r : 읽기 / w : 쓰기 / x : 실행)
  • 두번째 열 (숫자) : 링크 카운트. 파일은 기본으로 1, 디렉토리는 최소 2 이상(.과 ..이 있기 때문)
  • 다섯번째 열 : 바이트 단위의 파일 크기
  • 여섯번재 열 : Modify Time 마지막으로 수정된 시간 (리눅스의 시간은 세가지 : 1. Modify Time 2. Access Time 3. Change Time - 세가지 정보는 stat 명령어에서 확인 할 수 있음)
    • ls -lt = ls -l : Modify Time
    • ls -lut : Access Time
    • ls -lct : Change Time
  • 마지막 열 : 파일 또는 디렉토리 명

ls명령어 옵션

  • ls -a : all, 숨김파일도 모여줌
  • ls -i : i노드, 이 파일시스템에서 식별하기 위한 id 정보. 파일 이름이 같을 때 구분하기 위한 정보 (같은 파티션 내에서 다른 이름 같은 inode 면 같은 파일 / 다른 파티션에서 같은 inode여도 다른 파일) 리눅스 전용 특수 index
  • ls -F : 하위 디렉토리, 파일의 속성 (-d는 자기 자신의 속성) 파일의 속성별로 색깔이 다르게 표시됨
  • ls -d : 자기 자신의 속성
  • ls -R : 하위 디렉토리까지 보여주는 명령어
    (명령어를 섞어서 사용할 수 있다. ls -lR, ls -a -i 등등)

참고

stat 명령어

  • 디렉토리와 파일에 대한 다양한 정보를 확인. 내가 원하는 데이터와 정보를 원하는 형태로 출력시킬 수 있음.
    (머신러닝 등의 학습데이터 추출에 유용하다. ls명령어는 불필요한 데이터가 많이 포함됨)

파일 시스템

  • 파일은 디렉토리에 등록되어있는 개념임
  • 파일을 실행하는 것. 파일 명을 통해서 디렉토리에 접근. 디렉토리에 등록된 파일명의 inode를 읽고 저장장치에 접근
  • 파일을 삭제하는 것. 디렉토리에 파일명과 inode의 연결을 끊는 것.
  • 파일은 메타데이터 + 데이터 블록
  • 디렉토리도 메타데이터 + 데이터 블록으로 구성되어있는데, 데이터 블록에 하위 디렉토리와 파일에 대한 정보가 기입됨. 파일의 경우 파일명 + inode 등의 정보가 등록됨.
  • (왼쪽)xfs 파일 시스템 : 그냥 폴더만 생성했을 때 6바이트. 하위 폴더를 생성하면 조금만 늘어남.
  • (오른쪽)ext4 파일 시스템 : 폴더 만 생성했을 때 4096바이트. 하위 폴더를 생성해도 4096. => 파일 시스템마다 데이터를 저장하고 관리하는 방식이 다름.

find 명령어 활용 예시업로드중..

0개의 댓글