리눅스 Tips, 리눅스 C/C++ 프로그래밍, 모바일 클라우드 동향 및 테스트 등

2012년 10월 17일 수요일

리눅스 Tips : 디렉토리 구조 및 기능


Written by kakalot

1.리눅스 시스템의 디렉토리 구조 및 기능

리눅스의 디렉토리 구조는 전체적으로 트리(Tree) 구조를 하고 있으며, 명령어의 성격과 내용 및 사용 권한 등에 따라 디렉토리로 구분되고 있다. 리눅스 파일 시스템 구조는 기본적인 구조를 제외하고는 사용자의 설정에 따라 달라질 수 있다. 하지만 리눅스의 디렉토리 구조는 파일 시스템 표준안(FSSTND, Linux File System Standard)을 기반으로 하는 것이 바람직하다. 이것은 리눅스상에서 어떻게 파일 시스템을 구성할 것인지에 대한 표준안을 제정하기 위해서 만들어진 문서이다. 이 표준안을 무조건 따르라는 강제역은 없지만 리눅스 파일 시스템 표준안을 따라 파일 시스템을 구성할 경우 파일들의 위치가 일관되게 유지되어 프로그램 작성, 포팅은 물론 시스템 관리도 쉬워지는 이점이 있기 때문에 대부분의 배포판들이 이 표준안을 지키고 있다.

linux구조.jpg


2. 디렉토리별 기능 및 내용

대부분의 리눅스는 FHF(Filesystem Hierarchy Standard) 표준 파일 시스템 계층을 사용하고 같은 목적의 파일들은 같은 장소에 일관되게 모아 관리하므로 시스템 자원이나 프로그램들을 쉽게 찾을 수 있다. 다시 말하자면 명령어, 파일 그리고 문서들이 제각기 독립된 장소에서 관리된다.

가. /
일반적으로 루트 디렉토리라고 부르는 리눅스 시스템에서 가장 최상위 디렉토리이며 디렉토리 구조의 시작이다. 시스템 관리자의 홈 디렉토리인 /root 디렉토리와는 별개이며 다른 것이다. ‘/’ 디렉토리를 제외한 디렉토리인 /bin, /etc, /boot, /mnt, /usr, /lib, /home, /dev, /proc, /var, /sbin, /tmp, /root, /lost+found는 ‘/’ 디렉토리 안에 존재한다.

나. /bin
binarise의 약어로 이전 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리이다. 해당 디렉토리 안을 들여다보면 대부분의 파일들이 녹색으로 구성된 파일이 실행 파일임을 알 수 있다.
특히 이곳에는 부팅에 필요한 명령어들이 위치하며 부팅 후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치하고 있다.

다. /etc
/etc 디렉토리는 리눅스에서 없어서는 안 될 디렉토리이며, 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리이다. 이 디렉토리에 있는 대부분의 파일들은 시스템 관리자에 의해서 관리되는 파일들이다.
웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스 워드 관리, 시스템의 파일 시스템 관리 파일, 여러 가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스템 전반에 걸친 거의 모든 환경 설정 파일들이 모두 이 디렉토리 안에 저장되어 있다.

라. /boot
리눅스 커널이 저장되어 있는 디렉토리로서 각종 리눅스 Boot에 필요한 booting 지원 파일들이 저장되어 있는 디렉토리이다.

마. /mnt
외부 장치인 플로피 드스키, CD-Rom, Samba 등을 마운트하기 위해서 제공되는 디렉토리이다. 이 디렉토리는 임시로 사용되는 디렉토리이므로 프로그램은 /mnt 디렉토리에 어떠한 파일 시스템이 마운드되었는지 자동으로 인식하지 않는다. 또한 /mnt는 보통 여러 개의 하위 디렉토리로 나누어 사용하며, 평소에는 /mnt 디렉토리의 각 디렉토리들은 비어 있는 상태이다.

바. /usr
이 디렉토리 역시 가장 중요한 디렉토리 중 하나로 사용하면서 공유할 수 있는 디렉토리와 파일들을 가지고 있다. 즉, 시스템에 사용되는 각종 응용 프로그램들이 설치되는 디렉토리이다. 거의 모든 프로그램과 그에 관련된 명령어 및 라이브러리들이 이 디렉토리에 위치하게 된다, 또한 X 시스템 관련 파일들과 리눅스 커널 소스, 각종 C 언어 관련 헤더 파일 등도 이 디렉토리 안에 저장되어 있고, 이 디렉토리 아래에 존재하는 하위 디렉토리에 대해 간략하게 설명하겠다.

사. /lib
/lib 디렉토리에는 프로그램들의 각종 라이브러리들이 존재한다. 대부분 공유 라이브러리로 더 편리하게 사용할 수 있으며, 파일의 크기를 줄여서 실행할 때 불러 사용하게 된다.

아. /home
/home 디렉토리에는 시스템 계정 사용자들의 홈 디렉토리와 ftp, www등과 같은 서비스 디렉토리들이 저장된다. 이곳은 디렉토리와 파일들은 시스템에서 사용되지 않는다. 단지 리모트상에서 시스템으로 접속을 하는 사용자들을 위한 공간이다.

자. /dev
/dev 디렉토리에는 시스템의 각종 디바이스들에 접근하기 위한 디바이스 드라이버들이 저장되어 있는 디렉토리이다. 디렉토리를 살펴보면 많은 파일들이 위치하고 있는 것을 볼 수 있다. 하지만 이 디렉토리는 물리적인 용량을 갖지 않는 가상 디렉토리이다. 대표적으로는 하드 드라이브, 플로피, CD-Rom 그리고 루프백 장치 등이 존재한다. 리눅스 시스템은 윈도와 달리 각종 디바이스 장치들을 하나의 파일로 취급한다. 따라서 시스템은 각각의 장치로부터의 정보를 /dev 디렉토리에 존재하는 해당 장치 파일로부터 가지고 온다.

차. /proc
/proc 디렉토리에는 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장된다. 이 디렉토리는 가상 파일 시스템으로 가상 파일 시스템으로 /dev 디렉토리와 마찬가지로 하드 디스크상에 물리적인 용량을 갖지 않는다. 즉, 실제로 존재하지 않는다는 것이다. 또한 이 디렉토리에 존재하는 파일들은 실제 하드 디스크에 저장되지 않고 커널에 의해서 메모리에 저장된다. 그러므로 그 디렉토리 안의 파일들은 현재의 시스템 설정을 보여주는 것이다.

카. /var
/var 디렉토리는 시스템에서 사용되는 동적인 파일들이 저장된다. 각종 시스템 로그파일, 사용자 로그인에 대한 보안 기록, 그리고 만약 시스템에 메일 서버를 운영 한다면 사용자들에게 전송된 메일들을 임시로 저장한다. 레드햇 7.0에서부터 /var 디렉토리의 용도에 변경 내용이 있다. 과거에는 /home 디렉토리에 저장되던 /home/httpd 디렉토리가 /var/www로 이름이 변경되어 저장된다.
또한 /home/ftp 디렉토리가 /var/ftp로 변경되었다.

타. /tmp
디렉토리 이름에서도 알 수 있듯이 임시 파일들을 위한 디렉토리이다.

파. /root
시스템 관리자의 홈 디렉토리이다.

댓글 1개: