### 루트 파일시스템
루트 파일시스템은 보통 크기를 작게 만든다. 왜냐면 루트 파일시스템은 아주 중요한 파일들을 담고 있는데, 크기가 작고 자주 갱신되지 않는 파일시스템일 수록 손상될 위험은 줄어들기 때문이다. 만일 루트 파일시스템이 손상된다면 특별한 방법(한 예로, 플로피로 부팅하는 방법)을 쓰지 않는 이상 부팅은 불가능해진다. 이런 일은 꼭 피해야만 될 일이다.
루트 디렉토리( / 디렉토리 )에는 /vmlinuz라고 불리는 부트 이미지 파일만 넣어두는 것이 일반적이지만, 부트 이미지마저도 /boot라는 디렉토리 안에 넣어두고 루트 디렉토리에는 파일을 두지 않는 경우도 많다. 그 밖의 다른 파일들은 모두 루트 파일시스템의 하위 디렉토리 안에 존재한다.
/bin
이 곳에는 부팅할 때 필요한 명령어들이 들어 있다. 또한 부팅 후에는 일반 사용자들도 이 곳의 명령들을 사용할 수 있다. bin은 명령어들의 '저장고'라는 뜻이다.
/sbin
이 곳은 /bin 디렉토리와 비슷하지만, 주로 시스템 관리를 위한 명령들이 보관된다. 일반 사용자들은 제한적으로만 이 곳의 명령들을 사용할 수 있다.
/etc
여기는 각 머신의 고유한 설정 파일들이 위치하는 곳이다.
/root
루트 사용자의 홈 디렉토리이다.
/lib
공유 라이브러리가 있는 곳이다. 이 곳의 라이브러리들은 루트 파일시스템에 있는 프로그램들이 사용한다.
/lib/modules
로딩 가능한 커널 모듈들이 위치하는 곳이다. 특별한 경우, 장애를 복구하기 위해 시스템을 부팅할 때도 커널 모듈들이 필요하다(예로서, 네트워크 드라이버와 파일시스템 드라이버가 있다).
/dev
장치 파일들이 있는 곳이다. 장치 파일은 일반적인 파일과는 다른 특수 파일로서, 마치 파일을 읽고 쓰듯이 하드웨어를 다룰 수 있게 해준다.
/tmp
임시 파일들을 위한 공간이다. 부팅이 이루어지고 난 뒤에 실행되는 프로그램들은 /tmp가 아닌 /var/tmp를 사용해야 하는데, 보통 /var/tmp는 좀 더 여유공간이 많은 디스크 상에 위치하는 경우가 많기 때문이다.
/boot
LILO 같은 부트스트랩 로더가 사용하는 공간으로, 커널 이미지들이 이곳에 위치하게 된다. 부트스트랩 로더는 부트 이미지의 위치를 파악하여 부팅을 시작시켜 주는 프로그램으로서, 부트 이미지라는 것은 결국 부팅에 사용되는 커널 이미지이다. 부트 이미지는 보통 루트 디렉토리에 넣어 두거나 또는 /boot에 다른 커널 이미지들과 같이 넣어 둔다. 만약 많은 수의 커널 이미지를 갖고 있다면 /boot는 공간을 많이 차지할 것이므로 이런 경우에는 따로 독립적인 파일시스템을 만들어 주는 것이 좋다. 또한, 대용량 IDE 디스크에서 부트 이미지가 첫번째 1024 실린더 안에 있도록 하기 위해서 /boot를 독립된 파일시스템(1024 실린더 안에 있는 파일시스템)으로 만들기도 한다. 이렇게 하는 이유는 대부분의 부트스트랩 로더들이 1024 실린더 밖에 있는 부트 이미지를 인식하지 못하기 때문이다.
/mnt
시스템 관리자에 의해 임시로 마운트된 파일시스템들이 위치할 곳(mount point)이다. 이 곳은 어디까지나 임시로 사용하는 곳이므로 프로그램들은 /mnt에 무엇이 마운트되었는지 자동적으로 인식하지는 않는다. /mnt는 보통 하위 디렉토리로 분할하여 사용하게 된다(예를 들어 /mnt/dosa라는 곳은 MS-DOS 파일시스템을 사용하는 플로피 디스크를 마운트하는 곳일 것이다. 혹시 /mnt/exta라면 이것은 아마 ext2 파일시스템을 사용하는 플로피 디스크를 마운트하는 곳일 것이다).
/proc, /usr, /var, /home
/home에는 각 사용자들의 홈 디렉토리가 위치한다. /proc, /usr, /var에도 각각 다른 파일시스템이 마운트된다.
### /etc 디렉토리
/etc 디렉토리는 많은 파일들을 포함하고 있는데, 그 중 몇가지를 아래에 설명하였다.
/etc/rc or /etc/rc.d or /etc/rc?.d
시스템 시작시나 실행 레벨이 바뀔 때 실행되는 스크립트들이다. 혹은 그런 스크립트를 모아둔 디렉토리일 수도 있다.
/etc/passwd
이것은 사용자들의 데이터베이스 파일로서 이곳에는 사용자들의 username, 실제 이름, 홈 디렉토리의 위치, 암호화된 패스워드, 기타 정보들이 수록된다.
/etc/fdprm
플로피 디스크 파라미터 테이블이다. 이 파일은 비슷비슷한 플로피 디스크들 사이의 차이점에 대한 정보를 담고 있다.
/etc/fstab
이 곳에는 시스템 시작시 mount -a 명령(/etc/rc 같은 곳에 설정되어 있다)에 의해 자동으로 마운트될 파일시스템들이 나열되어 있다. 리눅스의 경우에는 swapon -a 명령에 의해 사용되는 스왑 영역에 대한 정보도 수록되어 있다.
/etc/group
/etc/passwd와 비슷하지만, 사용자들의 정보가 아닌 각 그룹들의 정보가 기재된다.
/etc/inittab
init의 설정파일이다.
/etc/issue
getty는 로그인 프롬프트가 뜨기 전에 이 파일의 내용을 화면에 뿌려준다. 이곳에는 시스템의 간단한 정보나 환영메시지를 적는 것이 보통이지만, 무엇을 적는냐하는 것은 전적으로 시스템 관리자 맘이다.
/etc/magic
file 명령의 설정 파일이다. 이곳에는 다양한 파일 형식들에 대한 정보가 포함되어 있는데, file 명령은 이것을 기반으로 파일의 정체를 추측해 낸다.
/etc/motd
Message Of The Day, 즉 '오늘의 메시지' 파일이다. 로그인할 때마다 자동으로 이 파일의 내용이 출력되며, 이곳에 어떤 내용을 적을 것인지는 시스템 관리자의 맘대로다. 보통은 시스템 가동 중지 예고 같은 것을 할 때 주로 쓰인다.
/etc/mtab
여기에는 현재 마운트되어 있는 파일 시스템의 목록이 들어 있다. 이것은 스크립트에 의해 초기화되며, mount 명령에 의해 그 내용이 자동으로 갱신된다. 마운트되어 있는 파일시스템의 목록이 필요한 경우에 쓰이는데, 예를 들면 df 명령이 이 파일을 읽는다.
/etc/shadow
섀도우 패스워드 소프트웨어가 설치되어 있는 시스템의 경우에는 이곳에 섀도우 패스워드가 보관된다. 섀도우 패스워드라는 것은 /etc/passwd 파일에서 암호화된 패스워드 부분만을 떼어내 /etc/shadow에 보관해 두는 것을 말한다; /etc/shadow는 단지 루트 사용자만이 읽을 수 있기 때문에 패스워드가 쉽게 크랙되는 것을 막을 수 있다.
/etc/login.defs
login 명령의 설정 파일이다.
/etc/printcap
/etc/termcap과 비슷한 것이지만 프린터를 위한 것이다. 문법도 다르다.
/etc/profile, /etc/csh.login, /etc/csh.cshrc
시스템이 시작될 때나 로그인이 이루어질 때, Bourne 쉘이나 C 쉘에 의해 실행되는 파일들이다. 이 파일들을 사용하면 모든 사용자들의 기본 환경을 설정해 줄 수 있다.
/etc/securetty
이 곳에서는 루트의 로그인이 허용되는 안전한 터미널을 지정한다. 보통은 가상 콘솔들만 나열되어 있는데, 이것은 누군가가 모뎀이나 네트워크를 통해 시스템에 침입하여 수퍼유저 권한을 얻는 일을 막도록 하기 위한 것이다.
/etc/shells
여기서는 신뢰할 수 있는 쉘이 어떤 것인지를 지정한다. chsh 명령으로 로그인 쉘을 바꿀 때 이 곳에 나열된 쉘들만 지정할 수 있다. 또한 FTP서비스를 제공하는 ftpd 서버 프로세스는 사용자의 쉘이 /etc/shells에 나열된 것과 일치하는 지를 확인하고, 만약 일치하지 않는다면 로그인을 거부한다.
/etc/termcap
여러가지 터미널들의 특성을 데이터베이스로 만들어 둔 것이다. 이 곳에는 다양한 종류의 터미널들이 각각 어떤 "이스케이프 시퀀스(escape sequence)"를 통해 제어될 수 있는지 기재되어 있다. 프로그램들은 현재 터미널의 종류가 어떤 것인지를 확인하고 /etc/termcap에서 해당 터미널에 알맞는 이스케이프 시퀀스를 찾아서 사용하게 된다. 따라서 각각의 프로그램이 터미널들의 특성에 대해 일일이 알고 있을 필요가 없으면서도, 대부분의 터미널에서 잘 동작하게 된다.
### /dev 디렉토리
/dev 디렉토리는 모든 하드웨어 장치에 대한 장치 파일들을 가지고 있다. 장치 파일들의 이름은 특별한 명명법을 가지고 있다; 이 명명법은 Linux device list 문서에 설명되어 있다. (장치 파일들은 설치시에 생성되며, 설치 후에는 /dev/MAKEDEV 스크립트에 의해 생성될 수 있다.) /dev/MAKEDEV.local은 시스템 관리자가 작성하는 스크립트로서 특정한 로컬 장치 파일들을 생성하거나 링크를 만드는 데 쓰인다(즉 표준 MAKEDEV 파일에 그 내용이 없는 몇몇 비 표준적인 장치 드라이버들을 위한 스크립트이다).
/usr 파일시스템
/usr 파일시스템은 쉽게 커지는데, 모든 프로그램들이 이 곳에 설치되기 때문이다. 보통 /usr 디렉토리에는 배포판에서 제공하는 파일들이 들어 있으며, 그 밖에 따로 설치되는 프로그램들과 내부적 용도의 프로그램들은 /usr/local에 들어가는 것이 일반적이다. 이렇게 하면, 배포판을 업그레이드 하거나 아예 새로운 배포판으로 바꾼다고 해도 전체 프로그램을 다시 설치할 필요가 없게 된다. /usr의 몇몇 하위 디렉토리들을 아래에 설명하였다(몇가지 중요하지 않은 디렉토리들은 설명하지 않았다;
/usr/X11R6
X Window System의 모든 파일들이 이곳에 들어 있다. X의 개발과 설치를 보다 손쉽게 하기 위해서, X는 전체 디렉토리 트리에 통합되지 않고 독자적인 디렉토리 트리를 가지고 있다. 그래서 /usr/X11R6의 디렉토리 구조는 /usr 자체의 디렉토리 구조와 아주 흡사하게 되어 있다.
/usr/X386
/usr/X11R6과 비슷한 것으로, X11 Release 5 를 위한 것이다.
/usr/bin
사용자들을 위한 대부분의 명령들이 이 곳에 들어있다. 그 밖에 몇몇은 /bin이나 /usr/local/bin에 있기도 한다.
/usr/sbin
시스템 관리를 위한 명령들 중, 루트 파일시스템에는 있을 필요가 없는 명령들이 이 곳에 있게 된다. 즉, 대부분의 서버 프로그램들이 이 곳에 위치한다.
/usr/man, /usr/info, /usr/doc
각각 매뉴얼 페이지, GNU Info 문서들, 그리고 기타 다른 문서들을 위한 공간이다.
/usr/include
C programming language를 위한 헤더 파일들이 이 곳에 있다. 원칙적으로는 /usr/lib 아래에 있어야 하겠지만, 예전부터 이 위치에 있어왔던 전통이 워낙 강력해서 아직도 이곳에 남아 있게 되었다.
/usr/lib
프로그램들과 서브시스템들의 고정적인 데이터 파일들이 이곳에 위치한다. 또한 전체 시스템에 폭넓게 적용될 수 있는 site-wide한 설정 파일들도 이곳에 있다. lib이라는 이름은 library에서 유래된 것으로, 원래는 이곳이 programming subroutine들의 라이브러리가 있던 곳이었기 때문에 이런 이름이 붙게 되었다.
/usr/local
이 곳은 내부적인 용도의 프로그램들과 기타 파일들을 위한 곳이다.
### /var 파일시스템
/var 파일시스템에는 시스템 운용 중 계속 갱신되는 데이터들이 모여 있다. 이 데이터들은 각 시스템에 고유한 것으로서, 네트워크를 통해 공유될 수 있는 성질의 것이 아니다.
/var/catman
이 곳은 포맷된 매뉴얼 페이지(man page)들이 잠시 대기(cache)하는 곳이다. 매뉴얼 페이지는 여러가지 형식으로 출력될 수 있는데, 출력될 형식에 알맞도록 먼저 포맷을 한 후 보게 된다. 포맷되지 않은 매뉴얼 페이지들은 보통 압축된 형태로 /usr/man/man* 에 위치한다; 어떤 매뉴얼 페이지들은 미리 포맷되어 있기도 한데, 이런 것들은 /usr/man/cat* 에 들어있는 것이 일반적이다. 포맷은 처음 볼 때만 한번하면 되고, 그 뒤에 같은 페이지를 보는 사람은 /var/man에 있는 것을 바로 꺼내볼 수 있으므로 포맷될 때까지 기다릴 필요가 없어진다(/var/catman 디렉토리는 자주 깨끗이 해주어야 하는데, 이것은 임시 디렉토리 안을 자주 지워줘야 하는 것과 같은 이유에서다).
/var/lib
일반적인 시스템 운용시 계속 갱신되는 파일들을 위한 공간이다.
/var/local
/usr/local 아래에 설치된 프로그램(즉, 시스템 관리자가 설치한 프로그램)들의 다양한 데이터가 보관되는 곳이다. 그 밖에 내부적으로 사용할 목적으로 설치된 프로그램이라 하더라도 /var의 하위 디렉토리를 사용하여 데이터를 보관하는 것이 좋은데, 예를 들면 /var/lock 같은 것이 있겠다.
/var/lock
잠금 파일(lock file)이 있는 곳이다. 많은 프로그램들이, 특정한 장치나 파일을 독점적으로 사용하고 있을 때 /var/lock에다 잠금 파일을 만드는 관례를 따르고 있다. 다른 프로그램들은 /var/lock에 잠금 파일이 있는지 알아보고 장치나 파일의 사용 여부를 결정하게 된다.
/var/log
다양한 프로그램들의 로그 파일이 있는 곳인데, 그 중에서도 특히 login과 syslog의 로그 파일이 이곳에 위치한다. login의 로그 파일은 /var/log/wtmp에 위치하며, 시스템의 모든 로그인, 로그아웃 정보를 기록한다. syslog의 로그 파일은 /var/log/messages에 위치하며, 커널과 시스템 프로그램들의 모든 메시지들을 기록한다. /var/log 안에 있는 파일들은 크기가 무제한으로 커질 수 있으므로 정기적으로 지워주어야 한다.
/var/run
이 곳에 있는 파일들은 시스템의 현재 정보들을 담고 있는데, 부팅을 다시하면 그 내용이 바뀌게 되는 것들이다. 예를 들면, 현재 로그인한 사용자들에 대한 정보는 /var/run/utmp 파일에 기록되어 있다.
/var/spool
메일이나 뉴스, 프린터 큐 같은, 대기 상태에 있는 작업들을 위한 디렉토리가 이 곳에 있으며, 각각의 작업들은 /var/spool 밑에 고유의 하위 디렉토리를 가지고 있다. 예를 들면, 각 사용자들의 편지함은 /var/spool/mail 아래에 위치하고 있는 식이다.
/var/tmp
/tmp에 있는 임시 파일들보다는 좀 더 오래 유지될 필요가 있는 임시 파일들이 이곳에 오게 된다(이곳에 있는 파일들 중에서도 아주 오래된 파일들은 시스템 관리자가 직접 지워 버릴 것이다).
### /proc 파일시스템
/proc 파일시스템은 실제로 존재하지 않는 일종의 환영이다. 이 파일시스템은 커널이 메모리 상에 만들어 놓은 것으로 디스크에는 존재하지 않는다. /proc은 시스템의 갖가지 정보를 제공해 주는데, 원래는 주로 프로세스에 대한 정보를 제공했기 때문에 proc(process)이란 이름을 갖게 되었다. 이 곳에 있는 중요한 파일과 디렉토리들을 아래에 설명하였다.
/proc/1
프로세스 번호 1번에 대한 정보가 있는 디렉토리이다. 각 프로세스는 자신만의 디렉토리를 /proc 아래에 갖고 있게 되는데, 자신의 프로세스 식별 번호(process identification number)가 그 디렉토리의 이름이 된다.
/proc/cpuinfo
프로세서의 정보가 들어있다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려준다.
/proc/devices
현재 커널에 설정되어 있는 장치의 목록을 볼 수 있다.
/proc/dma
현재 어느 DMA 채널이 사용 중인지를 알려준다.
/proc/filesystems
어떤 파일시스템이 커널에 설정되어 있는지를 알 수 있다.
/proc/interrupts
현재 어느 인터럽트가 사용 중인지, 그리고 얼마나 많이 사용되었는지를 알 수 있다.
/proc/ioports
현재 어느 I/O 포트가 사용 중인지를 알려준다.
/proc/kcore
이것은 시스템에 장착된 실제 메모리의 이미지이다(즉, 실제 메모리의 내용을 그대로 본뜬 것이다). 따라서 이 파일의 크기는 실제 메모리의 크기와 정확히 일치하는 것처럼 보인다. 그러나 이 파일은 프로그램이 필요로 하는 부분의 이미지만 그때 그때 만들어 내도록 되어 있어서, 실제로 메모리를 그만큼 차지하고 있는 것은 아니다. (/proc 파일시스템의 내용을 다른 곳에 복사하지만 않는다면, /proc 안의 내용은 아무런 디스크 공간을 차지하지 않는다는 점을 알아두자.)
/proc/kmsg
커널이 출력하는 메시지들이다. 이것은 syslog 파일에도 기록된다.
/proc/ksyms
커널이 사용하는 심볼들의 표를 보여준다.
/proc/loadavg
시스템의 평균부하량(load average)을 보여준다. 지금 시스템이 해야하는 일들이 얼마나 많은지 알려주는 세가지 지표를 볼 수 있을 것이다.
/proc/meminfo
메모리 사용량에 관한 정보를 보여준다. 실제 메모리와 가상 메모리를 모두 다룬다.
/proc/modules
현재 어떤 커널 모듈이 사용되고 있는지를 알려준다.
/proc/net
네트워크 프로토콜들의 상태에 대한 정보가 들어 있다.
/proc/self
이 곳은 이 디렉토리를 들여다보는 프로그램 자신의 프로세스 디렉토리로 링크가 되어 있다. 즉, 서로 다른 두 프로세스가 /proc를 본다면 그들은 서로 다른 링크를 보게 되는 것이다. 이렇게 하면 프로그램들이 자신의 프로세스 디렉토리가 어디인지를 쉽게 알 수가 있게 된다.
/proc/stat
이 곳에는 시스템의 상태에 관한 다양한 정보가 있다. 즉, 부팅된 후 page fault가 몇번 일어났는가 하는 것들을 알아 볼 수가 있다.
/proc/uptime
시스템이 얼마나 오랫동안 살아 있었는지 보여준다.
/proc/version
커널의 버전을 알려준다.
위에 나열한 파일들 대부분이 알아보기 쉬운 텍스트 파일로 되어 있긴 하지만, 어떤 경우에는 쉽게 알아보기 힘든 형식을 가지고 있기도 하다. 그래서 이런 파일들을 좀 더 쉽게 알아볼 수 있도록 해주는 많은 명령들이 준비되어 있다. 예를 들어 /proc/meminfo 파일은 메모리 사용량을 byte 단위로 나타내고 있는데, free 명령은 이것을 kilobyte 단위로 좀 더 알기 쉽게 나타내 준다(그리고 그 외에 몇가지 유용한 정보를 덧붙여 보여준다)
루트 파일시스템은 보통 크기를 작게 만든다. 왜냐면 루트 파일시스템은 아주 중요한 파일들을 담고 있는데, 크기가 작고 자주 갱신되지 않는 파일시스템일 수록 손상될 위험은 줄어들기 때문이다. 만일 루트 파일시스템이 손상된다면 특별한 방법(한 예로, 플로피로 부팅하는 방법)을 쓰지 않는 이상 부팅은 불가능해진다. 이런 일은 꼭 피해야만 될 일이다.
루트 디렉토리( / 디렉토리 )에는 /vmlinuz라고 불리는 부트 이미지 파일만 넣어두는 것이 일반적이지만, 부트 이미지마저도 /boot라는 디렉토리 안에 넣어두고 루트 디렉토리에는 파일을 두지 않는 경우도 많다. 그 밖의 다른 파일들은 모두 루트 파일시스템의 하위 디렉토리 안에 존재한다.
/bin
이 곳에는 부팅할 때 필요한 명령어들이 들어 있다. 또한 부팅 후에는 일반 사용자들도 이 곳의 명령들을 사용할 수 있다. bin은 명령어들의 '저장고'라는 뜻이다.
/sbin
이 곳은 /bin 디렉토리와 비슷하지만, 주로 시스템 관리를 위한 명령들이 보관된다. 일반 사용자들은 제한적으로만 이 곳의 명령들을 사용할 수 있다.
/etc
여기는 각 머신의 고유한 설정 파일들이 위치하는 곳이다.
/root
루트 사용자의 홈 디렉토리이다.
/lib
공유 라이브러리가 있는 곳이다. 이 곳의 라이브러리들은 루트 파일시스템에 있는 프로그램들이 사용한다.
/lib/modules
로딩 가능한 커널 모듈들이 위치하는 곳이다. 특별한 경우, 장애를 복구하기 위해 시스템을 부팅할 때도 커널 모듈들이 필요하다(예로서, 네트워크 드라이버와 파일시스템 드라이버가 있다).
/dev
장치 파일들이 있는 곳이다. 장치 파일은 일반적인 파일과는 다른 특수 파일로서, 마치 파일을 읽고 쓰듯이 하드웨어를 다룰 수 있게 해준다.
/tmp
임시 파일들을 위한 공간이다. 부팅이 이루어지고 난 뒤에 실행되는 프로그램들은 /tmp가 아닌 /var/tmp를 사용해야 하는데, 보통 /var/tmp는 좀 더 여유공간이 많은 디스크 상에 위치하는 경우가 많기 때문이다.
/boot
LILO 같은 부트스트랩 로더가 사용하는 공간으로, 커널 이미지들이 이곳에 위치하게 된다. 부트스트랩 로더는 부트 이미지의 위치를 파악하여 부팅을 시작시켜 주는 프로그램으로서, 부트 이미지라는 것은 결국 부팅에 사용되는 커널 이미지이다. 부트 이미지는 보통 루트 디렉토리에 넣어 두거나 또는 /boot에 다른 커널 이미지들과 같이 넣어 둔다. 만약 많은 수의 커널 이미지를 갖고 있다면 /boot는 공간을 많이 차지할 것이므로 이런 경우에는 따로 독립적인 파일시스템을 만들어 주는 것이 좋다. 또한, 대용량 IDE 디스크에서 부트 이미지가 첫번째 1024 실린더 안에 있도록 하기 위해서 /boot를 독립된 파일시스템(1024 실린더 안에 있는 파일시스템)으로 만들기도 한다. 이렇게 하는 이유는 대부분의 부트스트랩 로더들이 1024 실린더 밖에 있는 부트 이미지를 인식하지 못하기 때문이다.
/mnt
시스템 관리자에 의해 임시로 마운트된 파일시스템들이 위치할 곳(mount point)이다. 이 곳은 어디까지나 임시로 사용하는 곳이므로 프로그램들은 /mnt에 무엇이 마운트되었는지 자동적으로 인식하지는 않는다. /mnt는 보통 하위 디렉토리로 분할하여 사용하게 된다(예를 들어 /mnt/dosa라는 곳은 MS-DOS 파일시스템을 사용하는 플로피 디스크를 마운트하는 곳일 것이다. 혹시 /mnt/exta라면 이것은 아마 ext2 파일시스템을 사용하는 플로피 디스크를 마운트하는 곳일 것이다).
/proc, /usr, /var, /home
/home에는 각 사용자들의 홈 디렉토리가 위치한다. /proc, /usr, /var에도 각각 다른 파일시스템이 마운트된다.
### /etc 디렉토리
/etc 디렉토리는 많은 파일들을 포함하고 있는데, 그 중 몇가지를 아래에 설명하였다.
/etc/rc or /etc/rc.d or /etc/rc?.d
시스템 시작시나 실행 레벨이 바뀔 때 실행되는 스크립트들이다. 혹은 그런 스크립트를 모아둔 디렉토리일 수도 있다.
/etc/passwd
이것은 사용자들의 데이터베이스 파일로서 이곳에는 사용자들의 username, 실제 이름, 홈 디렉토리의 위치, 암호화된 패스워드, 기타 정보들이 수록된다.
/etc/fdprm
플로피 디스크 파라미터 테이블이다. 이 파일은 비슷비슷한 플로피 디스크들 사이의 차이점에 대한 정보를 담고 있다.
/etc/fstab
이 곳에는 시스템 시작시 mount -a 명령(/etc/rc 같은 곳에 설정되어 있다)에 의해 자동으로 마운트될 파일시스템들이 나열되어 있다. 리눅스의 경우에는 swapon -a 명령에 의해 사용되는 스왑 영역에 대한 정보도 수록되어 있다.
/etc/group
/etc/passwd와 비슷하지만, 사용자들의 정보가 아닌 각 그룹들의 정보가 기재된다.
/etc/inittab
init의 설정파일이다.
/etc/issue
getty는 로그인 프롬프트가 뜨기 전에 이 파일의 내용을 화면에 뿌려준다. 이곳에는 시스템의 간단한 정보나 환영메시지를 적는 것이 보통이지만, 무엇을 적는냐하는 것은 전적으로 시스템 관리자 맘이다.
/etc/magic
file 명령의 설정 파일이다. 이곳에는 다양한 파일 형식들에 대한 정보가 포함되어 있는데, file 명령은 이것을 기반으로 파일의 정체를 추측해 낸다.
/etc/motd
Message Of The Day, 즉 '오늘의 메시지' 파일이다. 로그인할 때마다 자동으로 이 파일의 내용이 출력되며, 이곳에 어떤 내용을 적을 것인지는 시스템 관리자의 맘대로다. 보통은 시스템 가동 중지 예고 같은 것을 할 때 주로 쓰인다.
/etc/mtab
여기에는 현재 마운트되어 있는 파일 시스템의 목록이 들어 있다. 이것은 스크립트에 의해 초기화되며, mount 명령에 의해 그 내용이 자동으로 갱신된다. 마운트되어 있는 파일시스템의 목록이 필요한 경우에 쓰이는데, 예를 들면 df 명령이 이 파일을 읽는다.
/etc/shadow
섀도우 패스워드 소프트웨어가 설치되어 있는 시스템의 경우에는 이곳에 섀도우 패스워드가 보관된다. 섀도우 패스워드라는 것은 /etc/passwd 파일에서 암호화된 패스워드 부분만을 떼어내 /etc/shadow에 보관해 두는 것을 말한다; /etc/shadow는 단지 루트 사용자만이 읽을 수 있기 때문에 패스워드가 쉽게 크랙되는 것을 막을 수 있다.
/etc/login.defs
login 명령의 설정 파일이다.
/etc/printcap
/etc/termcap과 비슷한 것이지만 프린터를 위한 것이다. 문법도 다르다.
/etc/profile, /etc/csh.login, /etc/csh.cshrc
시스템이 시작될 때나 로그인이 이루어질 때, Bourne 쉘이나 C 쉘에 의해 실행되는 파일들이다. 이 파일들을 사용하면 모든 사용자들의 기본 환경을 설정해 줄 수 있다.
/etc/securetty
이 곳에서는 루트의 로그인이 허용되는 안전한 터미널을 지정한다. 보통은 가상 콘솔들만 나열되어 있는데, 이것은 누군가가 모뎀이나 네트워크를 통해 시스템에 침입하여 수퍼유저 권한을 얻는 일을 막도록 하기 위한 것이다.
/etc/shells
여기서는 신뢰할 수 있는 쉘이 어떤 것인지를 지정한다. chsh 명령으로 로그인 쉘을 바꿀 때 이 곳에 나열된 쉘들만 지정할 수 있다. 또한 FTP서비스를 제공하는 ftpd 서버 프로세스는 사용자의 쉘이 /etc/shells에 나열된 것과 일치하는 지를 확인하고, 만약 일치하지 않는다면 로그인을 거부한다.
/etc/termcap
여러가지 터미널들의 특성을 데이터베이스로 만들어 둔 것이다. 이 곳에는 다양한 종류의 터미널들이 각각 어떤 "이스케이프 시퀀스(escape sequence)"를 통해 제어될 수 있는지 기재되어 있다. 프로그램들은 현재 터미널의 종류가 어떤 것인지를 확인하고 /etc/termcap에서 해당 터미널에 알맞는 이스케이프 시퀀스를 찾아서 사용하게 된다. 따라서 각각의 프로그램이 터미널들의 특성에 대해 일일이 알고 있을 필요가 없으면서도, 대부분의 터미널에서 잘 동작하게 된다.
### /dev 디렉토리
/dev 디렉토리는 모든 하드웨어 장치에 대한 장치 파일들을 가지고 있다. 장치 파일들의 이름은 특별한 명명법을 가지고 있다; 이 명명법은 Linux device list 문서에 설명되어 있다. (장치 파일들은 설치시에 생성되며, 설치 후에는 /dev/MAKEDEV 스크립트에 의해 생성될 수 있다.) /dev/MAKEDEV.local은 시스템 관리자가 작성하는 스크립트로서 특정한 로컬 장치 파일들을 생성하거나 링크를 만드는 데 쓰인다(즉 표준 MAKEDEV 파일에 그 내용이 없는 몇몇 비 표준적인 장치 드라이버들을 위한 스크립트이다).
/usr 파일시스템
/usr 파일시스템은 쉽게 커지는데, 모든 프로그램들이 이 곳에 설치되기 때문이다. 보통 /usr 디렉토리에는 배포판에서 제공하는 파일들이 들어 있으며, 그 밖에 따로 설치되는 프로그램들과 내부적 용도의 프로그램들은 /usr/local에 들어가는 것이 일반적이다. 이렇게 하면, 배포판을 업그레이드 하거나 아예 새로운 배포판으로 바꾼다고 해도 전체 프로그램을 다시 설치할 필요가 없게 된다. /usr의 몇몇 하위 디렉토리들을 아래에 설명하였다(몇가지 중요하지 않은 디렉토리들은 설명하지 않았다;
/usr/X11R6
X Window System의 모든 파일들이 이곳에 들어 있다. X의 개발과 설치를 보다 손쉽게 하기 위해서, X는 전체 디렉토리 트리에 통합되지 않고 독자적인 디렉토리 트리를 가지고 있다. 그래서 /usr/X11R6의 디렉토리 구조는 /usr 자체의 디렉토리 구조와 아주 흡사하게 되어 있다.
/usr/X386
/usr/X11R6과 비슷한 것으로, X11 Release 5 를 위한 것이다.
/usr/bin
사용자들을 위한 대부분의 명령들이 이 곳에 들어있다. 그 밖에 몇몇은 /bin이나 /usr/local/bin에 있기도 한다.
/usr/sbin
시스템 관리를 위한 명령들 중, 루트 파일시스템에는 있을 필요가 없는 명령들이 이 곳에 있게 된다. 즉, 대부분의 서버 프로그램들이 이 곳에 위치한다.
/usr/man, /usr/info, /usr/doc
각각 매뉴얼 페이지, GNU Info 문서들, 그리고 기타 다른 문서들을 위한 공간이다.
/usr/include
C programming language를 위한 헤더 파일들이 이 곳에 있다. 원칙적으로는 /usr/lib 아래에 있어야 하겠지만, 예전부터 이 위치에 있어왔던 전통이 워낙 강력해서 아직도 이곳에 남아 있게 되었다.
/usr/lib
프로그램들과 서브시스템들의 고정적인 데이터 파일들이 이곳에 위치한다. 또한 전체 시스템에 폭넓게 적용될 수 있는 site-wide한 설정 파일들도 이곳에 있다. lib이라는 이름은 library에서 유래된 것으로, 원래는 이곳이 programming subroutine들의 라이브러리가 있던 곳이었기 때문에 이런 이름이 붙게 되었다.
/usr/local
이 곳은 내부적인 용도의 프로그램들과 기타 파일들을 위한 곳이다.
### /var 파일시스템
/var 파일시스템에는 시스템 운용 중 계속 갱신되는 데이터들이 모여 있다. 이 데이터들은 각 시스템에 고유한 것으로서, 네트워크를 통해 공유될 수 있는 성질의 것이 아니다.
/var/catman
이 곳은 포맷된 매뉴얼 페이지(man page)들이 잠시 대기(cache)하는 곳이다. 매뉴얼 페이지는 여러가지 형식으로 출력될 수 있는데, 출력될 형식에 알맞도록 먼저 포맷을 한 후 보게 된다. 포맷되지 않은 매뉴얼 페이지들은 보통 압축된 형태로 /usr/man/man* 에 위치한다; 어떤 매뉴얼 페이지들은 미리 포맷되어 있기도 한데, 이런 것들은 /usr/man/cat* 에 들어있는 것이 일반적이다. 포맷은 처음 볼 때만 한번하면 되고, 그 뒤에 같은 페이지를 보는 사람은 /var/man에 있는 것을 바로 꺼내볼 수 있으므로 포맷될 때까지 기다릴 필요가 없어진다(/var/catman 디렉토리는 자주 깨끗이 해주어야 하는데, 이것은 임시 디렉토리 안을 자주 지워줘야 하는 것과 같은 이유에서다).
/var/lib
일반적인 시스템 운용시 계속 갱신되는 파일들을 위한 공간이다.
/var/local
/usr/local 아래에 설치된 프로그램(즉, 시스템 관리자가 설치한 프로그램)들의 다양한 데이터가 보관되는 곳이다. 그 밖에 내부적으로 사용할 목적으로 설치된 프로그램이라 하더라도 /var의 하위 디렉토리를 사용하여 데이터를 보관하는 것이 좋은데, 예를 들면 /var/lock 같은 것이 있겠다.
/var/lock
잠금 파일(lock file)이 있는 곳이다. 많은 프로그램들이, 특정한 장치나 파일을 독점적으로 사용하고 있을 때 /var/lock에다 잠금 파일을 만드는 관례를 따르고 있다. 다른 프로그램들은 /var/lock에 잠금 파일이 있는지 알아보고 장치나 파일의 사용 여부를 결정하게 된다.
/var/log
다양한 프로그램들의 로그 파일이 있는 곳인데, 그 중에서도 특히 login과 syslog의 로그 파일이 이곳에 위치한다. login의 로그 파일은 /var/log/wtmp에 위치하며, 시스템의 모든 로그인, 로그아웃 정보를 기록한다. syslog의 로그 파일은 /var/log/messages에 위치하며, 커널과 시스템 프로그램들의 모든 메시지들을 기록한다. /var/log 안에 있는 파일들은 크기가 무제한으로 커질 수 있으므로 정기적으로 지워주어야 한다.
/var/run
이 곳에 있는 파일들은 시스템의 현재 정보들을 담고 있는데, 부팅을 다시하면 그 내용이 바뀌게 되는 것들이다. 예를 들면, 현재 로그인한 사용자들에 대한 정보는 /var/run/utmp 파일에 기록되어 있다.
/var/spool
메일이나 뉴스, 프린터 큐 같은, 대기 상태에 있는 작업들을 위한 디렉토리가 이 곳에 있으며, 각각의 작업들은 /var/spool 밑에 고유의 하위 디렉토리를 가지고 있다. 예를 들면, 각 사용자들의 편지함은 /var/spool/mail 아래에 위치하고 있는 식이다.
/var/tmp
/tmp에 있는 임시 파일들보다는 좀 더 오래 유지될 필요가 있는 임시 파일들이 이곳에 오게 된다(이곳에 있는 파일들 중에서도 아주 오래된 파일들은 시스템 관리자가 직접 지워 버릴 것이다).
### /proc 파일시스템
/proc 파일시스템은 실제로 존재하지 않는 일종의 환영이다. 이 파일시스템은 커널이 메모리 상에 만들어 놓은 것으로 디스크에는 존재하지 않는다. /proc은 시스템의 갖가지 정보를 제공해 주는데, 원래는 주로 프로세스에 대한 정보를 제공했기 때문에 proc(process)이란 이름을 갖게 되었다. 이 곳에 있는 중요한 파일과 디렉토리들을 아래에 설명하였다.
/proc/1
프로세스 번호 1번에 대한 정보가 있는 디렉토리이다. 각 프로세스는 자신만의 디렉토리를 /proc 아래에 갖고 있게 되는데, 자신의 프로세스 식별 번호(process identification number)가 그 디렉토리의 이름이 된다.
/proc/cpuinfo
프로세서의 정보가 들어있다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려준다.
/proc/devices
현재 커널에 설정되어 있는 장치의 목록을 볼 수 있다.
/proc/dma
현재 어느 DMA 채널이 사용 중인지를 알려준다.
/proc/filesystems
어떤 파일시스템이 커널에 설정되어 있는지를 알 수 있다.
/proc/interrupts
현재 어느 인터럽트가 사용 중인지, 그리고 얼마나 많이 사용되었는지를 알 수 있다.
/proc/ioports
현재 어느 I/O 포트가 사용 중인지를 알려준다.
/proc/kcore
이것은 시스템에 장착된 실제 메모리의 이미지이다(즉, 실제 메모리의 내용을 그대로 본뜬 것이다). 따라서 이 파일의 크기는 실제 메모리의 크기와 정확히 일치하는 것처럼 보인다. 그러나 이 파일은 프로그램이 필요로 하는 부분의 이미지만 그때 그때 만들어 내도록 되어 있어서, 실제로 메모리를 그만큼 차지하고 있는 것은 아니다. (/proc 파일시스템의 내용을 다른 곳에 복사하지만 않는다면, /proc 안의 내용은 아무런 디스크 공간을 차지하지 않는다는 점을 알아두자.)
/proc/kmsg
커널이 출력하는 메시지들이다. 이것은 syslog 파일에도 기록된다.
/proc/ksyms
커널이 사용하는 심볼들의 표를 보여준다.
/proc/loadavg
시스템의 평균부하량(load average)을 보여준다. 지금 시스템이 해야하는 일들이 얼마나 많은지 알려주는 세가지 지표를 볼 수 있을 것이다.
/proc/meminfo
메모리 사용량에 관한 정보를 보여준다. 실제 메모리와 가상 메모리를 모두 다룬다.
/proc/modules
현재 어떤 커널 모듈이 사용되고 있는지를 알려준다.
/proc/net
네트워크 프로토콜들의 상태에 대한 정보가 들어 있다.
/proc/self
이 곳은 이 디렉토리를 들여다보는 프로그램 자신의 프로세스 디렉토리로 링크가 되어 있다. 즉, 서로 다른 두 프로세스가 /proc를 본다면 그들은 서로 다른 링크를 보게 되는 것이다. 이렇게 하면 프로그램들이 자신의 프로세스 디렉토리가 어디인지를 쉽게 알 수가 있게 된다.
/proc/stat
이 곳에는 시스템의 상태에 관한 다양한 정보가 있다. 즉, 부팅된 후 page fault가 몇번 일어났는가 하는 것들을 알아 볼 수가 있다.
/proc/uptime
시스템이 얼마나 오랫동안 살아 있었는지 보여준다.
/proc/version
커널의 버전을 알려준다.
위에 나열한 파일들 대부분이 알아보기 쉬운 텍스트 파일로 되어 있긴 하지만, 어떤 경우에는 쉽게 알아보기 힘든 형식을 가지고 있기도 하다. 그래서 이런 파일들을 좀 더 쉽게 알아볼 수 있도록 해주는 많은 명령들이 준비되어 있다. 예를 들어 /proc/meminfo 파일은 메모리 사용량을 byte 단위로 나타내고 있는데, free 명령은 이것을 kilobyte 단위로 좀 더 알기 쉽게 나타내 준다(그리고 그 외에 몇가지 유용한 정보를 덧붙여 보여준다)
'Linux > Study' 카테고리의 다른 글
apache 서비스 등록 (0) | 2008.10.09 |
---|---|
crontab 기본 설정 명령어 (0) | 2008.10.09 |
useradd 명령어 수행과정 (0) | 2008.10.09 |
소유권 (0) | 2008.10.09 |
RPM (0) | 2008.10.09 |