문서의 이전 판입니다!
기타/미분류
리눅스 파일 시스템 구조
리눅스를 설치하면, 상당히 많은 디렉토리가 자동으로 생성된다. 이러한 디렉토리는 대부분의 유닉스와 유사하다. DOS에서는 거의 사용자 임의대로 디렉토리의 이름을 정하여 사용하나, 유닉스에서는 아래와 같은 디렉토리의 이름들과 구조로 대부분 정해져 있다.
/bin
/bin은 "binaries"의 약자이며, 실행 파일들이 모여 있다. 이 디렉토리에는 많은 필수적인 프로그램들이 포함되어 있다. "ls /bin"을 해보면 이 안의 파일들을 볼 수 있으며 cp, ls, mv 같은 몇 개의 명령어들은 알아볼 수 있을 것이다. 이것들은 이들 명령어들의 실제 프로그램들이다. 따라서, ‘cp’ 명령을 입력하면, /bin/cp 프로그램이 실행되는 것이다. “ls -F”를 사용하면, /bin의 대부분의 파일들에서 "*"가 파일명 끝에 추가되어 있는 것을 볼 수 있을 것이다. 이것은 이 파일이 실행 가능한 파일임을 표시한다.
/dev
/dev 안의 파일들은 디바이스 드라이버들이다. 이것들은 디스크 드라이버, 모뎀, 메모리 등과 같은 시스템 디바이스나 자원들을 액세스하는데 사용된다. 예를 들면, 파일들로부터 정보를 읽어볼 수 있는 것과 같이, /dev/mouse를 액세스함으로써 마우스로부터 입력되는 정보를 읽어 올 수 있다. fd로 시작하는 파일 이름들은 플로피 장치들이다. fd0는 첫 번째의 플로피디스크 드라이브이며, fd1은 두 번째이다. 이 이외의 것들은 보통 플로피 디스크의 특정 형태를 표시한다. 예를 들면, fd0H1440은 첫 번째 드라이브(A: 드라이브)의 고밀도 3.5인치 디스켓을 말한다. 여기서는 가장 많이 사용되는 디바이스 파일을 열거하였다.
o /dev/console
시스템의 콘솔이며, 모니터가 시스템에 직접 연결되어 있음을 말한다.
o /dev/ttyS 와 /dev/cua 직렬 포트를 액세싱한다. 예를 들면, /dev/ttyS0는 도스 상의 "COM1"을 말하며, /dev/cua 는 "callout" 장치로써, 이것은 모뎀을 쓸 때 사용된다.
o hd로 시작하는 디바이스 이름 하드 디스크를 액세스한다. /dev/hda는 첫 번째 하드 디스크 전체를 말하며, hda1은 /dev/hda의 첫 번째 파티션을 말한다.
o sd로 시작하는 디바이스 이름
SCSI 하드 디스크 드라이브나 테이프 드라이브 같은 SCSI 장치들을 말한다. 만약 SCSI 하드 디스크를 가지고 있다면, /dev/hda를 액세스하는 대신에 /dev/sda를 액세스하여야 할 것이다.
o lp로 시작하는 디바이스 이름
병렬 포트를 말하며, /dev/lp1은 도스의 "LPT1"와 같다.
o /dev/null
"black hole"로서 사용되는 것으로서 어떠한 데이터를 이 장치에 보내면 모두 없어지게 된다. 예를 들면, 화면에 아무 것도 출력되지 않기를 바랄경우, /dev/null로 출력을 보내면 된다.
o /dev/tty로 시작되는 디바이스 이름 시스템에 있는 "가상 콘솔 : Virtual Console(VC)"이다. /dev/tty1은 첫 번째 VC이며, /dev/tty2는 두 번째이다. 가상 콘솔은 한 화면이 여러개의 가상 터미날을 갖는 것이다. 각각의 터미날은 [alt-F1], [alt-F2] 등을 누름으로서 전환할 수 있으며, 같은 사용자나 다른 사용자로 login 할 수 있다.
o /dev/pty로 시작하는 디바이스 이름
이것들은 원격 login 세션에서 사용되는 "pseudo-terminal"들이다. 예를 들어, 사용중인 컴퓨터가 네트워크에 연결되어 있고, telnet으로 login하려고 할 때, /dev/pty 디바이스를 사용한다.
/etc
/etc는 시스템 설정 파일, 프로그램, 유틸리티 등 다양한 프로그램들을 포함하고 있으며 대부분의 파일들은 관리자에 의해 사용되는 것이다. 이 디렉토리 안에 있는 파일들의 설명은 부록을 참조하길 바란다.
/home
/home은 사용자의 홈 디렉토리로서 login하였을 경우, 처음으로 위치하게 되는 디렉토리이다. 예를 들어, /home/larry는 사용자 "larry"의 홈 디렉토리이다. 시스템이 새로 설치되면, 이 디렉토리 안에 아무 것도 포함되어 있지 않다.
/lib
/lib는 공유 라이브러리 이미지를 포함하고 있다. 이 파일들은 일반적으로 사용되는 많은 프로그램에서 호출되는 코드들을 포함하고 있다. 어떤 프로그램이 공유 될 수 있는 루틴을 단독으로 포함하지 않고, 그 루틴을 일반 장소인 /lib 안에 저장한다. 이렇게 함으로서 실행 파일의 크기를 작게 만들어 사용자의 공간을 넓힐 수 있다.
/proc
/proc는 "가상 파일 시스템"이다. 이 디렉토리의 내용들은 시스템에서 운영되고 있는 다양한 프로세서들에 관한 내용과 프로그램에 대한 정보를 포함하고 있다. 이 디렉토리에서 볼 수 있는 것은 실제 드라이브에 저장되어 있는 내용이 아니며, 메모리상에 저장되어 있는 것이다.
/tmp
많은 프로그램들은 여러 정보가 임시 파일 안에 저장되는 것을 필요로 한다. 이런 파일들이 위치할 장소가 /tmp 이다.
/usr
/usr는 실제 작업을 위한 응용 패키지들이 설치되어 있는 디렉토리이다. 따라서 많은 서브디렉토리를 포함하고 있다.
/usr/X386
만약 X 윈도우 시스템을 설치하였다면 이 디렉토리에 설치될 것이다. X 윈도우 시스템은 방대하며, 많은 그래픽 유틸리티와 프로그램들이 그래픽 윈도우로 출력되는 강력한 그래픽 사용자 환경이다. 만약, 마이크로소프트의 윈도우즈나 맥킨토시 환경에 익숙하다면, X 윈도우즈가 아주 친숙해 보일 것이다. /usr/X386 디렉토리는 모든 X 윈도우즈 실행 파일, 사양 파일, 자원 파일들을 포함하고 있다.
/usr/adm
/usr/adm은 시스템 관리자들을 위한 것과 시스템의 문제나 에러를 기록해 놓은 다양한 파일들이 포함되어 있다.
/usr/bin
/usr/bin은 모든 유닉스 시스템이 소유하고 있는 소프트웨어를 담기 위한 진정한 warehouse이다. 이것은 /bin 같은 곳에는 없는 유용한 실행 파일들을 가지고 있다.
/usr/etc
/etc는 시스템 파일과 사양 파일이 있는 것처럼, /usr/etc에는 더많은 유틸리티와 파일들이 있다. 일반적으로 /usr/etc에 있는 파일들은 /etc에 있는 것만큼의 반드시 필요로 한 것들은 아니다.
/usr/include
/usr/include는 C 컴파일러를 위한 include 파일을 포함하고 있다. 이 파일은 데이터 구조 이름과 서브루틴, 상수 같은 C로 작성된 프로그램에서 사용되는 내용을 담고 있다. /usr/include/sys에 있는 파일들은 유닉스 시스템 레벨의 프로그래밍을 할 때 사용된다. 만약, C 프로그래밍 언어에 익숙하다면, 여기에 printf() 함수가 선언되어 있는 stdio.h 같은 헤더 파일을 찾을 수 있을 것이다.
/usr/g++-include
/usr/g++-include는 C++ 컴파일러의 include 파일들을 포함하고 있다.
/usr/lib
/usr/bin은 /lib에서 찾을 수 있는 "stub"와 "static"와 같은 라이브러리를 포함하고 있다. 프로그램을 컴파일할 때, 프로그램은 /usr/lib에 있는 파일들과 "link"되며 이 라이브러리 안에 실행 코드가 필요로 할 때, /lib를 찾는다. 또한, 많은 프로그램들이 /usr/lib 안에 사양 파일을 저장한다.
/usr/local
/usr/local은 /usr에 포함된 것과 매우 유사하고, 시스템에 반드시 필요로 하는 것은 아니지만, 매우 유용한 것들을 포함하고 있다. 일반적으로, /usr/local에 있는 프로그램들은 시스템의 특성을 결정짓는 소프트웨어들이 있으며, 따라서, 유닉스 시스템마다 매우 다르다. TeX(문서 형식화 시스템)나 Emacs(에디터)를 설치하였다면 이 디렉토리에서 찾을 수 있을 것이다.
/usr/man
이 디렉토리는 실제적인 man page를 포함하고 있다. 또한, 모든 man page 를 위한 두 개의 서브 디렉토리가 있다. 예를 들면, /usr/man/man1 은 section 1 안에 man page를 위한 형식화되지 않은 소스가 포함되어 있으며, /usr/man/cat1은 section 1을 위한 형식화된 man page가 포함되어 있다.
/usr/spool
/usr/spool 은 어떤 프로그램을 위한 "spool"된 파일들을 포함하고 있다. 예를 들면, 만약 사용중인 컴퓨터가 네트워크에 연결되어 있다면, 받은 메일은 /usr/spool/mail 안에 읽거나 지우기 전까지 저장될 것이다. 뉴스 글을 보내거나 받을 때는 그 내용이 /usr/spool/news에 있게 된다.
/usr/src
/usr/src는 시스템에 있는 다양한 프로그램의 컴파일 되지 않은 소스 코드들을 포함하고 있다. 여기서 가장 중요한 것은 /usr/src/linux이며, 이것은 리눅스 커널의 소스 코드를 포함하고 있다.
/usr/tmp
/tmp와 같은 임시 파일을 위한 또 다른 디렉토리이다.