Linux를 오래 사용해왔고 각 디렉토리의 용도와 어떤 파일이 있는가는 대강은 알고 있지만, 한 번 쯤 다시 정리해보고 싶어서 작성.
Linux Directory 구조
모든 것은 파일이다. (Everything is a file)
리눅스 시스템의 디렉토리 구조는 전체적으로 역 트리(tree) 구조이다. 리눅스 배포판들은 '리눅스 파일시스템 표준' 인 FSSTND(LINUX FILE System Standard) 라는 표준을 준수하므로 대부분의 리눅스 배포판들은 그 기본 골격이 같다.
리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다. 기본적으로 디렉토리를 구분하는 '/'(슬래시)는 리눅스에서 사용하고 윈도우는 반대인 '\'(역슬래시)를 사용한다.
/(루트)
최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리의 시작점이다. 즉, 모든 디렉토리들은 절대 경로로 표기할 때에 이 디렉토리부터 시작한다.
/bin & /sbin
기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템 사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재하며 root 사용자와 일반 사용자가 함께 사용할 수 있는 명령어 디렉토리이다. 사용자가 직접 작성한 명령어를 사용하고자 할 때 해당 디렉토리 아래에 추가하여 권한을 편집해주면 된다.
bin 폴더는 Binary의 대략적인 OS의 실행을 요구하는 명령어들이 들어있는 폴더이다.(cat, chmod, chown, cp, date, echo, kill, ln, ls, mkdir 등).
sbin 폴더는 bin과 유사하지만 오직 루트 유저만이 실행할 수 있는 명령어들이 들어 있다. (시스템 관리에 사용되는 명령) 시스템 점검 및 복구 명령, 시스템 초기 및 종료 명령 등 시스템 관리에 관련된 실행 파일들이 존재한다.
/boot
리눅스 부트로더(Boot Loader)가 존재하는 디렉토리. 즉, GRUB 와 같은 부트로더에 관한 파일들(grub.conf 등)이 이 디렉토리에 있다.
/dev
시스템 디바이스(device) 파일을 저장하고 있는 디렉토리. 즉, 하드디스크 장치파일 /dev/sda 와 같은 장치 파일들이 존재하는 디렉토리이다. device의 약자로 키보드, 마우스, 프린터 등과 같은 디바이스들을 파일 또는 디렉토리의 형태로 dev 폴더 안에 존재하기 때문에 표준 입출력(ex. 'cat /boot/vmlinux > /dev/dsp')을 통해 읽기 쓰기도 가능하며 디렉토리 어디에서든 접근할 수 있다.
- 가상 파일시스템으로 하드디스크 상에 물릭적인 용량을 갖지 않음.
/lib
프로그램들이 의존하고 있는 라이브러리 파일들이 존재한다.
- /lib/modules : 커널 모듈 파일들 존재
- 대부분의 라이브러리들은 링크로 연결되어 있음
/proc
메모리에서 동작 중인 시스템의 각종 프로세서, 프로그램 정보, 하드웨어적인 정보들이 저장된다.
- 가상 파일시스템으로 /dev 디렉토리와 마찬가지로 하드디스크 상에 물릭적인 용량을 갖지 않음
- 실제 하드 디스크에 저장되지 않고 커널에 의해서 메모리에 저장됨.
- 현재 시스템의 설정을 보여준다. 해당 디렉토리 내의 파일에 cat 명령을 이용해 시스템 정보를 확인할 수 있다.
( ex. /cat/proc/interrupts )
- 커널의 어떤 기능을 제어할 수 있는 역할을 가지고 있다. 대부분 읽기 전용이나, 일부 파일 중에는 쓰기가 가능한 파일이 존재하는데 이러한 파일들에 특정 값을 지정하면 커널 기능이 변하게 된다.
/etc
시스템의 거의 모든 설정파일이 존재하는 디렉토리.
- 사용자 정보와 암호, 네트워크 설정 파일, 파일 시스템 정보, 보안 파일 등 중요 설정 파일들이 위치.
- /etc/sysconfig
: 시스템과 네트워크 설정
- /etc/ssh/
: ssh 설정 파일들
- /etc/rc.d/
: 시스템 초기화와 관련된 스크립트가 존재.
- /etc/skel
: 새로운 사용자를 추가할 때 자동으로 생성되는 디렉토리와 파일이 있다.
- /etc/squid
: squid 프록시 서버에 관련된 파일이 있다.
- /etc/cron.d/
: crontab 명령의 설정 파일
- /etc/cron.daily
: 매일 작동하게 하는 crontab 스크립트 파일이 존재
- /etc/httpd
: 아파치 웹 서버의 설정 및 로그파일
/var (가변 자료 저장 디렉토리)
시스템에서 사용되는 동적인 파일들이 저장된다. 시스템 운영 중에 시스템 자료 데이터가 변경될 때 변경된 자료들이 저장된다. 주로 시스템 작동 기록(log)들을 저장한다.
- /var/log
: 시스템에 발생된 일들에 대한 기록 파일
- /var/named
: 네임서버 설정 파일들 존재
- /var/spool/mail
: 수신 메일을 사용자 명으로 기록하는 디렉토리
/usr
일반 사용자들을 위한 대부분의 프로그램 라이브러리 파일들이 위치한다.
- 각 유저 이름에 맞는 폴더 이름이 생성되어 있으며 각 폴더마다 bin, sbin, shared, lib와 같이 각 유저들이 사용할 수 있는 폴더들이 위치한다. 주로 시스템에서 가장 많은 영역을 차지하며 루트 유저와 자기 자신만이 접근 가능하다.
/tmp
임시 파일 저장 공간 (모든 사용자가 사용할 수 있음)
/lost+found
최상위 디렉토리인 / 디렉토리에만 존재하는 것이 아니라 파일시스템마다 존재할 수 있는 디렉토리이다. 이 디렉토리는 fsck 또는 e2fsck 등과 같은 파일시스템 체크 및 복구 유틸리티 실행 후에 주로 생성이 되는 것으로서 복구되지 않은 채로 블록(block)만 존재하는 파일 즉, 연결이 끊인 inode 들이 숫자파일 형태로 존재하는 곳이다. 숫자 형태로 존재하는 파일들은 mv 명령어로 파일 이름만 바꾸면 바로 복구될 수 있다.
'OS > Linux Server' 카테고리의 다른 글
[Linux] Linux에서 Docker를 운영하는 이유 (0) | 2021.11.29 |
---|---|
[Linux] Linux Command - Mornitoring (0) | 2021.11.24 |
[Linux] File System (0) | 2021.11.23 |
Linux 실질 메모리 사용률 계산 (0) | 2021.11.04 |
Port 사용 여부 확인 / Process Kill (0) | 2021.09.10 |