devops

Linux 운영체제, 리눅스 디렉토리 구조 정리 본문

DevOps

Linux 운영체제, 리눅스 디렉토리 구조 정리

vata500 2022. 4. 19. 17:13
반응형

스레드(Thread)

하나의 스레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미

멀티 프로세스(Multi-Thread)

멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹

백그라운드(background)

백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행

표준 스트림(Standard Stream)

프로그램을 드나드는 데이터를 흐름으로 표현한 단어

리다이렉션(Redirection)

리눅스에서 프로그램은 보통 세 개의 표준 스트림인 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)를 자동으로 열게 됩니다. 리다이렉션은 이러한 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 합니다. 


1) CLI로 ‘test’ 폴더를 만들고, 그 안에 ‘sample.txt’를 생성하는 작업을 하기 위해서는 어떤 명령이 필요한지 적고, 설명하기

방법 1

mkdir test
cd test
nano sample.txt

1) mkdir을 사용하여 'test' 폴더를 생성한다.
2) cd로 'test' 폴더에 들어간다.
3) nano 명령어를 사용하여 sample.txt를 생성한다.

방법 2

mkdir test
cd test
touch sample.txt

1) mkdir을 사용하여 'test' 폴더를 생성한다.
2) cd로 'test' 폴더에 들어간다.
3) touch를 사용하여 sample.txt를 생성한다

방법 3

mkdir test
touch /test/sample.txt

1) mkdir로 'test' 폴더를 생성한다.
2) touch를 사용하여 /test/sample.txt를 생성한다.


2) 리눅스의 디렉토리 구조를 학습하고, 정리하기

linuxhandbook.com/linux-directory-structure/

FHS(Filesystem Hierarchy Standard)는 Linux Foundation에서 유지되며, 리눅스 운영체제의 주 디렉토리를 정의한다.

대부분의 Linux 배포는 Filesystem Hierarchy Standard를 따르고 FHS 규정 준수를 유지하기 위해 자체 정책을 선언합니다. 그러나, 현재 대부분의 배포판은, 자유 표준 그룹의 회원에 의해 개발된 것까지 포함하여, 제안한 표준을 완전히 따르지는 않는다.

  • / : The root directory (기본 계층으로 모든 파일 시스템 계층의 기본)
  • /bin : Binaries (모든 사용자를 위해 Single-user mode에서 사용 가능한 필수 명령어 바이너리, cat, ls, cp 등)
  • /dev : Device Files (장치파일들이 저장)
  • /etc : Configuration Files (호스트별 시스템의 설정 파일)
  • /usr : User binaries and program data (기본 실행파일, 라이브러리 파일, 헤더 파일 등이 저장)
    • /bin (모든 사용자의 비 필수 명령어 바이너리)
    • /lib (/usr/bin/과 /usr/sbin/에 있는 바이너를 위한 라이브러리)
    • /local (로컬 데이터의 3차 계층, 이 Host에만 적용)
    • /share (아키텍처에 독립적인 데이터)
  • /home : User Personal Data (사용자의 파일 및 개인 설정이 포함된 홈 디렉토리)
  • /lib : Shared libraries (바이너리에 필요한 라이브러리)
  • /sbin : System Binaries (필수 시스템의 바이너리, fsck, init, route 등) 
  • /tmp : Temporary files (시스템 사용 중에 발생한 임시 데이터 저장, 부팅 시 초기화되며 크기 제한이 있을 수 있음)
  • /var : Variable data files (시스템 작동 중에 내용이 계속 변경될 것으로 예상되는 파일, 주로 데이터와 Log가 저장)
  • /boot : Boot files (부팅에 필요한 정보를 가진 파일 저장)
  • /proc : Process and kernel files (프로세스 정보 및 커널 관련 정보 저장)
  • /opt : Optional software (추가 패키지가 설치되는 디렉토리)
  • /root : The home dirctory of the root (root 계정의 홈 디렉토리)
  • /media : Mount point for removable media (CD_ROM이나 USB 등의 외부 장치를 연결)
  • /mnt : Mount directory (파일 시스템을 임시로 연결)
  • /srv : Service data (FTP, Web 등 시스템에서 제공하는 서비스의 데이터 저장)

 

/bin – 바이너리
'/bin'에는 ls, cp , cd 등과 같은 많은 기본 쉘 명령의 실행 파일이 직접 포함되어 있습니다. 대부분의 프로그램은 여기에서 바이너리 형식이며 Linux 시스템의 모든 사용자가 액세스할 수 있습니다 .

바이너리(binary) 파일?
jpg, png, mp3, exe와 같은 실행 파일 등을 의미하는 것으로 사용자 또는 프로그램이 사용하던 정보나 숫자 값을 특별한 가공없이 그대로 파일에 저장한다. 그래서 바이너리 파일의 내용을 확인하려면 해당 파일을 볼 수 있는 프로그램이 별도로 필요하다.

/dev – 장치 파일
이 디렉토리에는 장치와 관련된 파일을 포함하여 특수 파일만 포함되어 있습니다. 이는 디스크에 물리적으로 존재하지 않는 가상 파일입니다.

이러한 파일의 몇 가지 흥미로운 예는 다음과 같습니다.

/dev/null: 파일이나 문자열을 파괴하기 위해 보낼 수 있습니다.
/dev/zero: 0의 무한 시퀀스를 포함합니다.
/dev/random: 무작위 값의 무한 시퀀스를 포함합니다.
/etc – 구성 파일
/etc 디렉토리에는 시스템의 핵심 구성 파일이 포함되어 있으며 주로 관리자 및 서비스(예: 암호 파일 및 네트워킹 파일)에서 사용합니다.

시스템 구성을 변경해야 하는 경우(예: 호스트 이름 변경) 여기에서 해당 파일을 찾을 수 있습니다.

/usr – 사용자 바이너리 및 프로그램 데이터
'/usr'에서 모든 실행 파일, 라이브러리, 대부분의 시스템 프로그램 소스로 이동합니다. 이러한 이유로 그 안에 포함된 대부분의 파일은 읽기 전용입니다(일반 사용자용).

'/usr/bin'에는 기본 사용자 명령이 포함되어 있습니다.
'/usr/sbin'에는 관리자를 위한 추가 명령이 포함되어 있습니다.
'/usr/lib'에는 시스템 라이브러리가 포함되어 있습니다.
'/usr/share'는 문서를 포함하거나 모든 라이브러리에 공통적입니다. 예를 들어 '/usr/share/man'은 맨페이지의 텍스트를 포함합니다.

/home – 사용자 개인 데이터
홈 디렉토리에는 사용자의 개인 디렉토리가 있습니다. 홈 디렉토리에는 사용자 데이터와 사용자별 구성 파일이 있습니다. 사용자는 개인 파일, 메모, 프로그램 등을 홈 디렉토리에 넣습니다.

Linux 시스템에서 사용자 를 생성할 때 사용자의 홈 디렉토리를 생성하는 것이 일반적입니다. Linux 시스템에 Alice와 Bob이라는 두 명의 사용자가 있다고 가정합니다. /home/alice 및 /home/bob 위치에 자체 홈 디렉토리가 있습니다.

Bob은 /home/alice에 액세스할 수 없으며 그 반대의 경우도 마찬가지입니다. 이는 사용자만 자신의 집에 액세스할 수 있어야 하기 때문에 의미가 있습니다. 이 주제에 대한 자세한 내용 은 Linux의 파일 권한에 대해 읽을 수 있습니다 .

/lib – 공유 라이브러리
라이브러리는 기본적으로 실행 가능한 바이너리에서 사용할 수 있는 코드입니다. /lib 디렉토리는 /bin 및 /sbin 디렉토리의 바이너리에 필요한 라이브러리를 보유합니다.

/usr/bin 및 /usr/sbin의 바이너리에 필요한 라이브러리는 /usr/lib 디렉토리에 있습니다.

/sbin – 시스템 바이너리
이것은 /bin 디렉토리와 유사합니다. 유일한 차이점은 루트 또는 sudo 사용자만 실행할 수 있는 바이너리가 포함되어 있다는 것입니다. 'sbin'의 ''는 super 또는 sudo로 생각할 수 있습니다.

/tmp – 임시 파일
이름에서 알 수 있듯이 이 디렉토리에는 임시 파일이 있습니다. 많은 응용 프로그램이 이 디렉터리를 사용하여 임시 파일을 저장합니다. 디렉토리를 사용하여 임시 파일을 저장할 수도 있습니다.

그러나 /tmp 디렉토리의 포함은 시스템이 다시 시작될 때 삭제된다는 점에 유의하십시오. 일부 Linux 시스템은 오래된 파일도 자동으로 삭제하므로 여기에 중요한 것을 저장하지 마십시오.

/var – 변수 데이터 파일
변수의 줄임말인 Var는 프로그램이 시스템 로깅, 사용자 추적, 캐시 및 시스템 프로그램이 만들고 관리하는 기타 파일과 같은 런타임 정보를 저장하는 곳입니다.

여기에 저장된 파일은 자동으로 정리되지 않으므로 시스템 관리자가 시스템 동작에 대한 정보를 찾을 수 있는 좋은 위치를 제공합니다. 예를 들어, Linux 시스템에서 로그인 기록을 확인하려면 /var/log/wtmp에 있는 파일의 내용을 확인하면 됩니다.

/boot – 부팅 파일
'/boot' 디렉토리에는 LILO 및 Grub 외에 커널 및 부트 이미지 파일이 포함되어 있습니다. 디렉토리는 디스크 시작 부분의 파티션에 있는 것이 좋습니다.

/proc – 프로세스 및 커널 파일
'/proc' 디렉토리에는 현재 실행 중인 프로세스와 커널 매개변수에 대한 정보가 들어 있습니다. proc 디렉토리의 내용은 런타임 시스템 정보를 얻기 위해 여러 도구에서 사용됩니다.

예를 들어 Linux에서 프로세서 정보를 확인하려면 /proc/cpuinfo 파일을 참조하기만 하면 됩니다. Linux 시스템의 메모리 사용량 을 확인하려면 /proc/meminfo 파일의 내용을 확인하십시오.

/opt – 선택적 소프트웨어
전통적으로 /opt 디렉토리는 배포 저장소에서 사용할 수 없는 타사 응용 프로그램의 파일을 설치/저장하는 데 사용됩니다.

일반적인 방법은 소프트웨어 코드를 opt에 유지한 다음 /bin 디렉토리에 있는 바이너리 파일을 링크하여 모든 사용자가 실행할 수 있도록 하는 것입니다.

/root – 루트의 홈 디렉토리
/root 디렉토리도 있으며 루트 사용자의 홈 디렉토리로 작동합니다. 따라서 /home/root 대신에 root의 홈은 /root에 있습니다. 루트 디렉토리(/)와 혼동하지 마십시오.

/media – 이동식 미디어의 마운트 지점
USB 디스크, SD 카드 또는 DVD와 같은 이동식 미디어를 연결하면 /media 디렉터리 아래에 해당 디렉터리가 자동으로 생성됩니다. 이 디렉토리에서 이동식 미디어의 내용에 액세스할 수 있습니다.

/mnt – 마운트 디렉토리
이것은 /media 디렉토리와 유사하지만 이동식 미디어를 자동으로 마운트하는 대신 mnt를 사용하여 시스템 관리자가 파일 시스템을 수동으로 마운트합니다.

/srv – 서비스 데이터
/srv 디렉토리에는 시스템에서 제공하는 서비스에 대한 데이터가 들어 있습니다. 예를 들어, HTTP 서버를 실행하는 경우 웹 사이트 데이터를 /srv 디렉토리에 저장하는 것이 좋습니다.

서비스(Service)?
백그라운드에서 실행되거나 실행될 것으로 예상되는 Linux의 프로그램 또는 응용 프로그램이다.

반응형
Comments