일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tomcat
- Java
- AOP
- Spring
- Linux
- Jenkins
- STREAM
- 라우터
- map
- post
- Pipeline
- 허브
- DevOps
- LAN어댑터
- sonarQube
- 소켓
- 방화벽
- gradle
- ansible
- Collection
- Set
- cloud
- 캐시서버
- 액세스회선
- docker
- JPA
- mybatis
- jdk
- IntelliJ
- container
- Today
- Total
거북이-https://velog.io/@violet_evgadn 이전완료
Linux Directory Structure 본문
Linux File 종류
Linux는 저장하는 모든 것들을 파일 형태로써 관리하는 OS이다.
그렇다면 Linux에서 관리하는 파일의 종류에 대해 알아보자.
◎ 일반 파일
우리가 생각하는 일반적인 파일로써 Windows에서 부르는 파일과 똑같은 개념이라 생각하면 된다.
데이터를 저장하는데 활용되며 Linux는 대부분 일반 파일 + Directory 파일로 구성되어 있다.
Windows에서는 텍스트 파일을 메모장에서 볼 수 있듯 Linux에서는 ASCII 코드로 구성된 텍스트 파일을 VI Editor 계열의 문서 편집기를 통해 확인 및 수정이 가능하다.
텍스트 파일 외의 파일들은 확장자에 맞는 응용 프로그램이 있어야 확인 가능하다.
◎ 디렉터리 파일
디렉터리 파일은 일반 파일과 (하위) 디렉터리 파일들을 저장하고 있는 파일이다.
Windows에서 폴더와 똑같은 개념인데 Linux에서는 디렉터리 또한 파일의 일종으로 간주한다.
◎ 장치 파일
장치(HW)들을 관리하는 파일이다.
이전에 말했듯 Linux에서는 하드디스크도 "/dev/sda1" 같은 형식으로 관리한다.
Linux는 장치 파일을 활용하여 CPU, 하드디스크, USB 같은 유형의 장치들을 파일화하여 관리한다.
◎ 링크 파일
링크 파일은 원본 파일을 다른 경로에서나 다른 파일명으로도 접근할 수 있도록 링크시킨 파일을 말한다.
이렇게 말하면 어렵게 느껴질지도 모르지만 Windows에서 "바로가기"와 유사하다고 생각하면 편하다.
내 바탕화면에 있는 이 IDEAProject 폴더는 "C://Users/~/IdeaProjects" 폴더의 바로가기 폴더이다.
바탕화면에 있는 IDEAProject 폴더를 클릭하면 바로 "C://Users/~/IdeaProjects" 폴더로 접속할 수 있다.
이렇듯 Linux에서도 바로가기 Directory(혹은 일반 파일)을 만들 수 있고 이렇게 만들어진 것이 링크 파일이다.
컴퓨터 프로그래밍 적으로 말하자면 C언어의 주솟값에 저장되어 있는 데이터가 원본 파일이고 "Object a"라는 객체에 주솟값을 저장했을 경우 Object가 링크 파일이라고 할 수 있는 것이다.
Linux Directory Structure(Root Directory 구조)
Linux는 수많은 파일을 효율적으로 관리하기 위해 Root Directory 아래 수많은 파일들이 Tree 구조로 되어 있는데 각 Directory는 용도에 따라 구분되며 이를 File System이라고 한다.
모든 디렉토리의 최상위 디렉터리, 즉 Tree의 Root 위치에 존재하는 Directory를 루트 디렉터리라고 하며 "/"로 표시한다.
◎ /
루트 디렉터리를 의미하며 모든 디렉터리 및 파일의 최상위 디렉토리이다.
절대 경로로 특정 파일이나 디렉터리에 접근하기 위해선 항상 루트 디렉터리에서부터 시작해야 하며 오직 Root 권한을 가진 사용자만 쓰기 권한을 가진다.
◎ /bin
Binary의 약자로써 실행 가능한 이진 파일(명령어)들이 저장되어 있다.
Single-User Mode에서 활용할 수 있는 일반 Linux 명령어들과 Multi-User Mode에서 모든 사용자가 사용할 수 있는 명령어들이 저장되어 있다.
대표적인 명령어로썬 ps, ls, grep, cp 등이 존재한다.
◎ /sbin
System Binary의 약자로써 실행 가능한 System 관련 이진 파일(명령어)들이 저장되어 있다.
/bin이 일반 User들이 활용하는 명령어라면 /sbin은 주로 System 관리자가 시스템 상태 확인 및 유지 관리 목적으로 주로 활용한다.
대표적인 명령어로썬 iptables, ifconfig, fdisk 등이 존재한다.
◎ /etc
모든 프로그램에 대한 Configuration 파일들을 저장하고 있는 설정 파일 Directory이다.
여기에는 개별 프로그램을 시작하거나 중지시킬 수 있는 Start/Stop 쉘 스크립트도 저장되어 있다.
Linux Booting 과정에서 설명했던 여러 파일을 예시로 들어보자면 GRUB 설정 파일인 "/etc/grub.conf"와 Partition에 대한 설정을 저장한 "/etc/fstab"이 존재한다.
◎ /dev
Device의 약자로써 System Device(HW; 장치) 파일을 저장하고 있는 디렉터리이다.
Linux는 모든 것들을 파일 형태로 관리하고 있으며 HW(Device) 또한 "장치 파일"이라는 형태로 관리한다.
이 물리적 장치를 파일화 시킨 것들을 dev 디렉터리 내에 저장하는 것이다.
대표적으로 /dev/sda(하드디스크 장치), /dev/cdrom(CD-ROM) 장치 파일이 존재한다.
◎ /proc
Process의 약자로써 System Process에 대한 정보를 저장하고 있다.
먼저 System Resource에 대한 텍스트 정보가 저장되어 있는 가상 파일 시스템이다. 대표적으로 "/proc/uptime"이 존재하는데 이 파일에는 현재 서버가 얼마나 켜져 있었는지를 저장하고 있다.
또한 실행 중인 프로세스에 대한 정보를 포함하는 Pseudo FileSystem(유사 파일 시스템)이기도 한데 "/proc/[PID]" Directory에 특정 PID를 가진 Process에 대한 정보를 저장하고 있다.
◎ /var
Variable의 약자로써 계속해서 내용이 증가할 것으로 판단되는 파일들은 대부분 var Directory에서 찾을 수 있다.
System Log 파일(/var/log), DB & Package 파일(/var/lib), email 파일(/var/mail), 재부팅 시 필요한 임시 파일(/var/tmp), Lock 파일(/var/lock), Print Queue(/var/spool) 등이 존재한다.
◎ /tmp
Temporary의 약자로써 임시 파일을 저장하는 디렉터리이다.
임시파일들은 System과 사용자에 의해 만들어지며 재부팅 시 tmp Directory 내에 있는 모든 파일들은 삭제되며 10일 정도의 간격을 두고 정기적으로 삭제된다.
◎ /usr
User의 약자로써 일반 사용자들이 사용하는 디렉터리이다.
User가 사용하는 이진 파일, 라이브러리, 설명서 및 2차 프로그램의 Source Code를 저장하고 있다.
- /usr/bin : 사용자 프로그램을 위한 이진 파일
- 만약 /bin에서 이진 파일(명령어)을 찾을 수 없을 경우 이곳에 저장되어 있음
- ex : at, awk, cc, less 등
- /usr/sbin : 시스템 관리자를 위한 이진 파일
- 만약 /sbin에서 System 이진 파일(명령어)을 찾을 수 없을 경우 이 곳에 저장되어 있음
- ex : atd, cron, useradd 등
- /usr/lib : /usr/bin & /usr/sbin을 위한 라이브러리가 포함되어 있음
- /usr/local : 새로운 프로그램을 설치할 경우 이 곳에 저장됨
- Windows의 "C:\\Program Files" 폴더와 유사한 Directory
- ex : Apache를 설치할 경우 /usr/local/apache2 아래에 저장됨
- /usr/src : Program Source 및 Kernel Source 파일들이 저장되어 있음
- /usr/man : Manual 페이지가 저장되어 있음
- /usr/include : 기본 C 라이브러리 헤더 및 각종 라이브러리 헤더 파일들이 저장되어 있음
◎ /home
사용자들의 Home Directory들이 저장되어 있다.
사용자를 추가할 때마다 사용자 Username과 동일한 디렉터리가 자동으로 생성되고 해당 User의 홈 디렉터리로써 설정된다.
서버 관리자가 아닐 경우 가장 많이 접속하게 될 Directory로써 Root가 아닌 일반 User로써 로그인할 경우 처음에는 /home/[Username] 디렉토리로 접속한다.
◎ /boot
Boot Loader관련 파일이 저장되어 있어 Linux Booting 시 사용되는 디렉터리이다.
Kernel initrd, vmlinux, GRUB 파일들이 모두 이 디렉토리 내에 저장되어 있다.
◎ /lib
Library의 약자로써 /bin과 /sbin 아래에 있는 이진 파일들을 위한 라이브러리 파일이 저장되어 있다.
(/usr/lib은 /usr/bin & /usr/sbin을 위한 Library, /lib은 /sbin & /bin을 위한 Library)
라이브러리 파일 이름 형식은 모두 "ld* or lib*.so.*"이다.
◎ /opt
Optional add-on Applications를 저장한다는 의미에서 opt라는 이름이 붙었다.
추가 응용프로그램 패키지 설치 장소로써 Packager Manger가 자체적으로 이곳에 설치/삭제를 수행한다.
◎ /media
DVD, CD-ROM, USB 등의 외부 장치들의 Mount Point로 사용되는 디렉터리이다.
◎ /mnt
Mount의 약자로써 /media와 비슷한 기능을 한다.
/media와 차이가 있다면 /media는 OS에서 자동으로 마운팅 시킬 때 사용되는 디렉터리이지만 /mnt는 사용자가 직접 마운트 시킬 때 사용되는 디렉터릴이다.
예를 들어 USB를 꽂으면 OS에 의해 /media 디렉터리와 마운팅되지만 사용자가 명령어를 통해 마운트시킬 경우 /mnt 디렉토리와 마운팅 되는 것이다.
◎ /root
관리자 계정(Root 계정)의 홈 디렉터리이다.
◎ /run
마지막 부팅 단계 이후 시작된 모든 Process의 Runtime Data가 저장되는 디렉터리이다.
Process ID 및 잠금 파일 등이 저장되며 재부팅할 때마다 새롭게 생성되는 디렉터리이다.
◎ /sys
Device를 관리하기 위한 가상 파일 시스템 디렉터리로써 Linux Kernel 관련 정보들이 저장되어 있다.
◎ /srv
Service의 약자로써 특정 서비스 관련된 데이터들이 저장된다.
FTP나 Web 등 System에서 제공하는 서비스의 데이터가 저장되는데, 예를 들어 /srv/cvs는 CVS System 관련 데이터가 저장된다.
◎ /lost + found
휴지통과 같은 개념이다.
Linux Tree 구조에는 이렇게 많은 Directory들이 있다. 당연하게도 이 Directory들을 모두 외울 필요는 없으며 궁금할 때마다 Directory의 용도를 확인하는 정도로만 활용하면 될 것이다.
'Linux' 카테고리의 다른 글
Inode (0) | 2023.02.15 |
---|---|
Working Directory (0) | 2023.02.15 |
Linux 시스템 Booting 관련 명령어 (0) | 2023.02.14 |
Linux 부팅 과정 (0) | 2023.02.10 |
Root 계정 관련 메서드 (0) | 2023.02.09 |