티스토리 뷰

Study/Linux

[Linux] FHS를 이루는 폴더들 (2)

생각많은 소심남 2016. 4. 27. 19:44



/lib

보통 프로그램이 있으면 프로그램이 독립적으로 실행되는 경우도 있지만, 외부 library와의 link를 통해서 API나 기능을 제공받는 프로그램도 존재한다. 이때 외부 library들은 보통 이 폴더에 저장되고 실행 프로그램은 앞에서 소개했던 /bin이나 /sbin에 저장된다. 결국 /bin이나 /sbin에 있는 binrary들이 실행되는데 필요한 library들이 저장되는 폴더라고 보면 될듯하다. 일반적으로 booting이나 filesystem상에서 실행되는데 필요한 명령어들을 제공하기도 하고, 뭔가의 graphical feature를 제공하는 library도 들어있다. 이 밖에도 device driver같이 loadable module 같은 경우는 /lib/modules 하위에 저장되기도 한다. 
 아마 못들어본 사람도 있겠지만 PAM(Pluggable Authentication Module) 같이 security와 관련한 파일들은 lib 하위의 security에 저장된다.
 그리고 참고로 만약 64 bit 운영체제를 사용한다면 lib 이외에도  lib64라는 폴더도 존재할 수 있는데, 이름에도 나와있는 것처럼 64 bit에 맞춰진 library들이 여기에 저장된다.

 

/media

보통 CD나 usb 같이 removable media에 해당하는 filesystem이 mount될때 이 폴더 하위로 subdirectory 형태로 생긴다. 여기서 이전에 잠깐 소개했던 udev가 등장하는데, media를 system에 장착하게 되면 udev는 /media 하위에 폴더를 생성하고, file system을 해당 point에 mount시켜준다. 이때 폴더 이름으로 정해지는 규칙들이 있는데, 이런 규칙에 대한 설정은 보통 /etc/udev나 /usr/lib/udev내에 udev-rules 라는 이름으로 정의되어 있기도 하다. 물론 해당 filesystem이 unmount되는 경우 /media 내의 해당 폴더도 동시에 없어지게 된다.

 

/mnt

directory 이름에도 내재되어 있는 것처럼 filesystem을 임시로 mount시켜주는 용도로 사용된다. 가장 흔하게 쓸수 있는게 network filesystem인데, 아마 samba를 쓰던가 CIFS, AFS를 쓴다면 해당 filesystem이 /mnt쪽으로 mount될 것이다. 혹은 약간 변칙적으로 /media에 mount될 것을 /mnt에 mount시켜서 사용하는 경우도 있긴 한데, 요즘 나오는 Linux Distribution은 거진 위의 형태를 따른다.

 

/opt

linux에서 유저가 프로그램을 설치할때 default로 지정되어 있는 경로가 /opt directory이다. 마치 윈도우에선 program_files 폴더와 같은 형식으로 보면 될거 같다. 아무튼 이렇게 하면 한곳에서 installing과 uninstalling을 할 수 있기 때문에 system management 측면에서 효율적이라고 할 수 있다. 가령 aaa라는 program을 설치하게 되면

 /opt/aaa/

/opt/aaa/bin/

/opt/aaa/man/

와 같은 경로로 형성되는 것이다. 물론 이같은 경우는 유저가 설치용 binary를 이용해서 수동으로 설치한 프로그램일 경우에 이런 작업들을 확인해야 되는 것이지, 실제로로는  rpm이나 apt 같은 packaging tool들이 프로그램 설치나 삭제를 대신해준다.

 

/proc & /sys

지금 소개할 directory나 다음에 소개할 /sys 같은 것을 보통 pseudo file system이라고 하는데, 말그대로 뭔가 실체를 가지지 않은 파일들을 가진 file system을 말한다. 실체가 없는데, file system이라고 부르기 힘들것 같지만, 다른 file system처럼 어떤 정보를 가지고 있고, 그걸 탐색할 수 있기 때문에 filesystem이라고 부르는 것 같다. 실체가 없다는 말의 의미는 다음과 같다. 보통 프로그램이 실행되기 위해서는 디스크의 특정 영역에 있는 데이터가 실행되는 순간 memory로 load되는 형식인데, pseudo file system이라 함은 그런게 디스크에 있는게 아니라 memory 혹은 register의 정보를 담고 있다는 것이다. 특히 /proc은 디스크가 아닌 메모리에 상주해있는 process의 정보를 담고 있다. 당연히 정상적으로 돌아가지 않는 system이라면 /proc이 비어있을 것이다. 
 재미있는 것은 proc 안에 들어 있는 파일의 특성을 살펴보면 다 크기가 0으로 되어 있다는 것이다. 그런데도 해당 파일을 읽어보면 많은 데이터들이 들어 있다. 보통 이런 파일들을 virtual file(or pseudo file)이라고 하는데 이런 파일들은 kernel 내에서 procfs라는 interface로 생성되는 것이다. 기능에 대해 궁금한 사람은 한번 /proc/ 하단에 있는 interrupts, meminfo, partitions 같은 파일들을 살펴보면 좋을 듯 싶다.

 /sys도 큰 맥락에서는 /proc과 비슷한데 차이가 약간 있다. 우선 /proc내의 virtual file들처럼 file information을 읽을수도 있지만 값을 씀으로서 수정도 가능하다. 그래서 보통 sysfs 예제를 꼽으라고 하면 /sys쪽에 나와있는 gpio class를 건드려서 LED를 제어하는 예제들이 많이 있다.(적어도 raspberry pi 예제에서는 그렇다.) 다만 /proc내의 virtual file과는 다르게 파일 하나당 하나의 값만 가질 수 있다. 
 이런식으로 kernel space의 값들을 user level에서 처리할 수 있기 때문에 debugging시 유용하게 쓸 수 있다.

 

/tmp

directory 이름에도 있다시피 임시적인 파일, 즉 동작에 크게 영향을 미치지 않는 파일들이 임시로 저장되는 공간이다. 특성에 따라서는

- 며칠 지나면 해당 폴더내의 파일들이 저절로 삭제된다.

- reboot이 될때마다 해당 폴더내의 파일들이 삭제된다.

- 일종의 ram disk인 tmpfs로 쓰여져 파일들이 임시로 저장될 수 있다.

같은 성격을 지닐 수 있는데, 이는 Linux Distribution에 따라서 다르다. 유념해야 할 것은 해당 폴더가 ram과 연관이 있기 때문에 크기가 큰 파일을 여기에 저장할 경우 시스템의 메모리 부족을 야기할 수도 있으므로 되도록이면 여기에 파일을 저장하는 것을 피해야 한다는 점이다.

 

/usr

음.. /usr 폴더는 2차 계층 구조라고 할 수 있는데, 보통 system boot과 관련된 파일과 폴더과 있는 /와 다르게 booting과는 연관이 없는 파일들이 저장되어 있다. 그런데 폴더의 형식이나 구성이 / 하위의 구조와 비슷하게 되어있다. /usr 하위로 bin, include , lib, sbin 같은 폴더들이 있다. 여기에는 보통 user-depenedable한 프로그램이나 파일들이 들어있고, 일반적으로 해당 파일들을 read-only 권한만 가지고 있다.

 

/var

var는 variable의 약자인데, 시스템 동작중 자주 바뀌는 파일들이 주로 저장되는 곳이다. 자주 바뀌는 파일이 보통 뭐가 있나 살펴보면

- log 파일

- mail이나 print시 발생하는 spool 파일

- cache content

- etc

같은게 있다.

'Study > Linux' 카테고리의 다른 글

[Linux] udev (user device)  (0) 2016.05.03
[Linux] Device node  (6) 2016.05.03
[Linux] Kernel Modules  (0) 2016.04.29
[Linux] FHS를 이루는 폴더들 (1)  (0) 2016.04.27
[Linux] Filesystem Hierarachy Standard(FHS)  (0) 2016.04.25
[Linux] Service  (0) 2016.04.24
[Linux] SysVinit runlevel  (0) 2016.04.22
댓글