본문 바로가기
Computer & Program/잡다한 이모저모

[Linux]디렉토리 구조

by TDRemon 2009. 7. 27.
반응형
리눅스 시스템은 아래 그림과 같이 계층적인(hierarchical) 트리(tree)구조로 구성되어 있다.


리눅스는 드라이브라는 개념을 사용하지 않고 파티션마운트라는 개념을 사용한다. 리눅스는 루트 디렉토리를 시작으로 계층적으로 구성되어 있고, 각 디렉토리는 다른 디렉토리들과 명확하게 역할이 구분되어 있다. 또한 설치시 각 디렉토리를 별도의 파티션으로 분할하여 마운트시켜 사용할 수도 있다.

주의할 것은 이 디렉토리 구조는 리눅스 커널의 소스 구조와는 다르다. 리눅스는 디렉토리를 포함하여 장치들까지도 파일로 취급하므로 이 디렉토리 구조를 리눅스 파일 구조라 부른다. 그럼 각 하위 디렉토리 구조를 살펴보면

/ (root)
최상위에 위치하는 디렉토리로서 루트 디렉토리라고 한다. 일반적인 데이터 파일을 저장하지 않으며 모든 디렉토리로 접근하기 위한 출발점이면서 다른 파티션의 기본 연결점이다. 루트 파티션 속에 위치하는 디렉토리를 별도의 파티션으로 분할하여 사용하면 루트 파티션의 크기를 훨씬 줄일 수 있으면 검색 속도 및 파티션 체크 속도를 향상시킬 수 있다. 기본적으로 자동 파티션을 설정하는 경우에는 /boot와 swap 파티션을 제외한 나머지를 루트 파티션으로 할당한다.

/bin
시스템에서 사용되는 기본 명령어들이 위치하는 디렉토리로 많은 리눅스 명령이 저장되어 있다. 디렉토리 이름에서 알 수 있듯이 이곳의 프로그램 대부분이 이진 파일이라는 것을 의미한다.

/var
내용이 자주 변경되는 가변 자료들이 저장되는 디렉토리로 기본적으로는 시스템을 운영할 때 발생되는 로그 파일들이 저장된다. 그 외에는 메일을 송/수신할 때 임시로 저장되는 스풀, 프린트로 전송하기 위해 임시로 저장하는 프린트 스풀 데이터, 레드햇 배포판에서 패키지로 제공하는 아파치 웹 서버 관련 자료, MySQL의 데이터베이스, FTP의 최상의 디렉토리 등 도 저장된다.

/boot
부팅에 필요한 파일들이 위치하는 디렉토리. 즉, 리눅스 커널 이미지도 이 디렉토리에 위치하며 시스템 부팅 시 부트로더가 커널의 위치를 이곳에서 참조한다.

/dev
각 장치에 대한 장치 파일이 위치하는 디렉토리. 여기에는 일반적인 파일을 저장하지 않으며 장치 파일은 특수한 경우가 아니면 스스로 생성되지 않는다. 그래서 디렉토리 내용은 거의 변하지 않는다.

/etc
환경 설정에 필요한 설정 파일들이 존재한다. 이 디렉토리에는 시스템을 관리하는데 필요한 파일뿐만 아니라 시스테 설치 시 선택했던 부트로더인 grup의 환경 설정 파일인 grup.conf파일, 시스템의 암호 파일인 passwd, 사용 가능한 모든 터미널에 대한 설명을 기술한 termcap 파일도 존재한다.

/home
일반 사용자들의 홈 디렉토리가 위치하는 곳이다. 즉 각 사용자들의 개인적인 파일들을 저장할 수 있도록 한 공간이다. 시스템 디렉토리는 대부분 중요한 파일들로 구성되어 있기 때문에 일반 사용자들이 함부로 건드려서는 안 된다. 따라서 사용자들의 개인적인 파일을 저장할 수 있도록 공간을 따로 할당하는 것이 바람직하다. 사용자의 홈 디렉토리 정보는 /etc 하위에 있는 암호 파일(passwd)에 저장되어 있고 만약 사용자들이 로그인하면 자동적으로 암호 파일에 명시된 디렉토리에서 시작되도록 한다. 그리고 자신의 홈 디렉토리에 맞는 권한에 맞는 작업을 수행할 수 있다.

/lib
기본 라이브러리가 있는 디렉토리. 시스템 운영 및 프로그램을 실행할 때 필요한 공유 라이브러리뿐만 아니라 커널 모듈도 포함된다. 일반 사용자가 함부로 접근해서는 안된다.

/mnt
일반적인 임시로 마운트된 파일 시스템들이 위치하는 곳으로 보통 하위 디렉토리로 분할하여 사용한다.

/proc
프로세스와 시스템 정보를 사용자에게 제공하기 위한 목적으로 만들어진 proc 파일 시스템을 위한 디렉토리. /proc 내의 파일들은 실제로 하드디스크에 존재하는 것이 아니라 메모리에 존재한다. 참고로 문자로 이루어진 디렉토리 or 파일은 시스템 및 커널 정보를 담고 있으며 숫자로 이루어진 디렉토리는 현재 시스템 내의 프로세스의 정보를 담고 있다. 사용자는 이 디렉토리 내의 생성되는 파일들을 통해 프로세스의 정보를 확인할 수 있으며 진행 상황을 추적할 수도 있다.

/root
시스템 관리자, 즉 root 사용자의 홈 디렉토리. 일반 유저는 이 디렉토리의 내용을 볼 수 없다.

/sbin
Systemp binaries의 약자로 시스템 관리자가 사용하는 시스템 운영에 필요한 명령어가 존재하는 디렉토리. 이곳은 관리자만이 사용할 수 있으며 fdisk, reboot와 같은 명령들이 위치한다.

/tmp
프로세스 생성 과정에서 발생되는 임시 파일을 저장하는 디렉토리로 파일들이 자주 생성되고 삭제된다. 시스템을 재시작 하면 이 곳의 모든 파일이 삭제된다. 잠시 동안만 저장할 필요가 있는 파일을 이곳에 저장한다.

/usr
모든 애플리케이션 및 시스템 파일들, 라이브러리 파일 및 실행 파일이 위치하는 디렉토리로 비교적 많은 공간이 필요하다.(수동 설치시 3GB 정도의 파티션 할당) 즉 프로그램을 설치할 때 패키지에 포함된 대부분의 파일이 이곳에 설치된다. /usr 디렉토리는 매우 중요한 디렉토리 중 하나로 많은 하위 디렉토리를 가지고 있다.
 디렉토리 설명 
 /usr/bin  실행 파일을 보관
 /usr/dict  리눅스 사전이 사용하는 파일들
 /usr/ include  프로그래머들이 사용하는 .h 로 구성된 헤더 파일들
  /usr/lib  프로그램의 라이브러리와 프로그래머들이 사용하는 데이터들
  /usr/local  시스템 관리자가 자신의 프로그램이나 문서를 저장하는 데 사용
  /usr/man  온라인 매뉴얼에 의해 사용되는 디렉토리와 파일들

/lost+found
fsck(File System Check) 명령어가 사용하는 디렉토리며 개별 파일 시스템의 최상위 디렉토리마다 존재한다. fsck 명령은 시스템을 부팅할 때 파일시스템의 이상 유무를 진단하여 문제 발생시 구동 된다. 일반적으로는 이 디렉토리에 파일이 존재하지 않는 것이 정상이다.

/misc
시스템 아키텍처에 독립적인 자료들이 저장되는 디렉토리
반응형

'Computer & Program > 잡다한 이모저모' 카테고리의 다른 글

[Computer]방 구석에 굴러 다니던거 정리  (0) 2009.07.29
[C++]계승  (2) 2009.07.28
[Linux]리눅스의 특징  (0) 2009.07.23
[C/C++]컴파일 & 링크  (0) 2009.07.22
[C++]inline Function  (0) 2009.07.22

댓글