배경
- 리눅스 서버를 최근 다루는 일이 생겼다. 리눅스에 대해 잘 알고 있어야 할 필요성을 느끼게 되어 다시 한번 공부하기로!
리눅스 파일 시스템 구조
/
- 루트 디렉토리라고 불리며 리눅스의 최상위 디렉토리이다.
- 아래의 주요 디렉터리를 포함하고 있다. 이 디렉토리를 기준으로 모든 디렉토리가 생성되고 다른 파티션(디스크 분할)의 연결점이다.
/bin
- 사용자들이 쓸 수 있는 명령어를 저장해 놓은 디렉터리이다.
- ex) cp. mv. vi ...
/boot
- 부팅에 필요한 커널과 부팅할 때 필요한 핵심 파일이 들어있다.
/dev
- 장치 파일(프린터, 마우스, 모니터 등)을 저장하는 공간이며 커널을 통해서 이 하드웨어에 접근하고 자원을 할당 받을 수 있다 (일종의 장치 관리자)
- 실제 로 하드 디스크에 존재하지는 않는 정보를 저장함
- 모든 하드웨어( hdd,cdrom, 마우스, 가상 장치,etc…) 를 파일로 인식하며 이를 장치 파일이라 함
- psaux PS/2 마우스 장치
- tty : teletypewritter, 사용자와 시스템 사이를 중계하는 역할, 사용자와 시스템 사이의 입출력은 모두 여기를 통해 이루어짐, 서버 시스템에 직접 연결된 장치에서 사용함
- pts : telnet, ssh 등을 이용해 원격으로 접속할 경우(pseudo TTY slave)
- 유사 장치 : 실제 장치와 곾렦이 없음
- null : 이 장치로 들어갂 데이터는 모두 사라짐
- zero : 이 장치에서는 항상 null을 반환
/etc
/home
- 일반 사용자의 홈 디렉토리가 생성되는 곳. 리눅스는 다중 접속이 가능한 운영체제이기 때문에 사용자들이 접속한 상태에서 파일의 변환이나 생성 프로세스가 많이 발생하게 되는데 이때에 한 디렉터리에서 모든 사용자가 작업을 수행하게 될 경우 충돌이 생길 수 있기 때문에 각각의 사용자 공간을 마련해 둔 것이라고 생각하면 된다.
/lib
- 시스템 운영 및 프로그램을 구동할 때 필요한 공유 라이브러리 ( 프로그램을 실행시키기 위해서는 단계별로 실행해야 할 파일들이 있는데 이 파일들이 들어있음)
/root
- 시스템 관리자, 즉 root 사용자의 홈 디렉토리
/mnt
- CD-ROM과 플로피 장치에 대한 기본 마운틴 포인트를 제공
- ex) mount/mnt/chdrom(CD-ROM일 경우), mount/mnt/floppy(플로피 디스크의 경우), mount/dev/sda/mnt/usb (usb 메모리의 경우)
/proc
- 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시스템을 사용하는 디렉토리 (프로그램을 구동하게 되면 /proc에 해당 프로셋의 PID 번호에 해당하는 디렉토리를 생성하여 프로세스의 진행상황을 추적하고 관리)
- 문자로 이루어진 이름의 디렉토리와 파일 : 시스템 및 커널 정보
- 숫자로 이루어진 이름의 디렉토리 : 현재 실행 중인 프로세스의 정보
sbin.
- 관리자가 사용하는 시스템 운영에 필요한 명령어가 존재하는 디렉토리
- ex) fdisk, reboot 등
/tmp
- 프로세스 생성 과정에서 발생되는 임시파일을 저장하는 디렉토리
- 종료시에 이 위치에 있는 모든 파일은 삭제된다.
/usr
- 프로그램을 설치할 때 패키지에 포함된 대부분의 파일이 이곳에 설치 (윈도우 Program files와 유사)
- 리눅스 배포판에 따라 많은 차이를 보임
- 어플리케이션 수준의 프로그램들이 여기에 있음
- usr 밑의 bin, lib,… 등은 사용자가 자유롭게 다룰 수 있으며 루트 디렉토리의 같은 이름을 가짂 디렉토리와 같은 역할을 한다.
/var
- 내용이 자주 변경되는 가변 자료가 저장
- /var/lib : 일반적인 시스템 운용시 계속 갱신되는 파일들을 위한 공간
- var/local
- /usr/local 아래에 설치된 프로그램들의 다양한 데이터가 보관
- /var/lock : 잠금 파일(lock file)이 있는 곳이다.
- /var/log : 다양한 프로그램들의 로그 파일
- /var/log/wtmp : 시스템의 모든 로그인, 로그아웃 정보를 기록
- /var/log/messages: 커널과 시스템 프로그램들의 모든 메시지
- /var/run : 시스템의 현재 정보, 부팅 시 리셋
- /var/run/utmp : 현재 로그인한 사용자들에 대한 정보
- /var/spool : 대기 상태에 있는 작업들을 위한 디렉토리
- /var/tmp : /tmp에 있는 임시 파일들보다는 좀 더 오래 유지될 필요가 있는 임시 파일들, 부팅 시 지워지지 않는다.
💘 기억하기
- /var/lib : 일반적인 시스템 운용시 계속 갱신되는 파일들을 위한 공간
- /usr/share
The /usr/share hierarchy is for all read-only architecture independent data files. [30]
This hierarchy is intended to be shareable among all architecture platforms of a given OS; thus, for example, a site with i386, Alpha, and PPC platforms might maintain a single /usr/share directory that is centrally-mounted. Note, however, that /usr/share is generally not intended to be shared by different OSes or by different releases of the same OS.
Any program or package which contains or requires data that doesn't need to be modified should store that data in /usr/share (or /usr/local/share, if installed locally). It is recommended that a subdirectory be used in /usr/share for this purpose. Applications using a single file may use /usr/share/misc.
→ /usr/share 계층은 모든 읽기 전용 아키텍처 독립 데이터 파일을 위한 것이다.
이 계층은 특정 OS의 모든 아키텍처 플랫폼 간에 공유할 수 있도록 설계되었다. 예를 들어 i386, Alpha 및 PPC 플랫폼이 있는 사이트에서는 중앙 마운트된 단일 /usr/share 디렉토리를 유지할 수 있다. 그러나 /usr/share는 일반적으로 서로 다른 OS 또는 동일한 OS의 서로 다른 릴리스에서 공유되도록 되어 있지 않는다.
수정할 필요가 없는 데이터를 포함하거나 필요로 하는 모든 프로그램 또는 패키지는 해당 데이터를 /usr/share(또는 /usr/local/share(로컬/공유)(로컬 설치된 경우)에 저장해야 한다. 이를 위해 /usr/share에서 하위 디렉토리를 사용하는 것이 좋다. 단일 파일을 사용하는 응용 프로그램에서는 /usr/share/misc를 사용할 수 있다.
- /etc/systemd/system/
- systemctl은 systemd의 LGPL 라이센스를 따르는 시스템 자원 통합 관리 도구이다.
- 설정 파일은 /etc/systemd 아래에 위치하며, 각 파일 별로 [Unit], [Service], [Install]로 구성됨
- systemd 는 리눅스 커널 API 로 설계된 시스템 관리 데몬이다.
https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=kangheero&logNo=152197462
https://webdir.tistory.com/101
https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s11.html
https://sysops.tistory.com/67