/
(루트) 디렉터리/bin
, /sbin
, /lib(/lib64)
, /etc
, /dev
, /proc
와 같은 중요 디렉터리가 위치해 있다.bin
디렉터리/usr/bin
에는 그 외의 일반 사용자를 위한 명령어가 있다.bin
과 /usr/bin
은 배포판이 관리하는 다렉터리이므로 패키지 시스템을 사용하지 않는다./usr/local/bin
에 보관하는 것이 좋다.sbin
디렉터리/usr/sbin
에는 평상시 사용하는 시스템 관리 명령어나 서버 프로그램이 배치된다.lib
디렉터리일반적으로 .../lib
및 .../lib64
와 같은 디렉터리에는 라이브러리가 있다.
c언어, 루비, 파이썬 등의 라이브러리를 보관한다.
우분투의 경우 lib64
디렉터리를 사용하지 않고 /lib/x86_64-linux-gnu
처럼 lib 디렉터리 밑에 한 단계 디렉터리를 만들어 각종 라이브러리를 배치한다.
centOS에서는 64비트 라이브러리를 lib64
디렉터리 밑에 두고 32비트 라이브러리나 아키텍처 독립적인 파일을 lib
디렉터리에 둔다.
/lib
와 /usr/lib
를 구분하는 규칙은 bin
과 동일하며, 부팅 시에 필요한지 여부에 따라 갈린다.
/lib
와 /usr/lib
도 배포판이 관리하는 디렉터리이므로 패키지 시스템을 사용하지 않으며 직접 설치하는 라이브러리는 /usr/local/lib
등에 보관하는 것이 좋다.
/usr
디렉터리/usr
디렉터리/usr
에 필요한 소프트웨어나 파일을 세팅하고 복수의 시스템이 원격 /usr
을 마운트해서 사용하게 한다. 그러면 복수의 컴퓨터에서 동일한 프로그램이나 라이브러리를 사용할 수 있게 된다./usr
에 넣는 데이터는 공유할 수 있는 것만 해둬야 한다./var
에 보관한다./usr/src
디렉터리/usr/include
디렉터리/usr/include/linux
에 보관한다./usr/share
디렉터리/usr/share/man
디렉터리/usr/share/man
밑에는 man1
, man2
, man3
...이 있으며 뒤의 번호가 섹션 번호이다. 즉 섹션 1의 man 페이지는 /usr/share/man/man1
에 있다.도큐먼트이름.섹션
형식의 파일로 나열되어 있다./usr/share/man/man1/cp.1
이고 printf 함수의 man 페이지는 /usr/share/man/man3/printf.3
이다./usr/local
디렉터리/usr
처럼 /bin
, /sbin
, /lib
, /share
등의 디렉터리가 있다./usr/local
밑에 파일을 배치해서는 안된다./var
디렉터리/var
디렉터리/var/log
디렉터리/var/spool
디렉터리/var/spool/mail
이나 프린트 입력/var/spool/cups
이 일시적으로 저장된다./var/run
디렉터리PID실행 중인 서버 프로세스의 프로세스 ID가 저장된다. 이러한 파일을 PID 파일이라고 한다.
서버 기동 시에 이 디렉터리에다가 PID를 기록하고 종료할 때 제거한다.
예를 들어 inetd 서버의 경우 기동 시에 /var/run/inetd.pid
에 자신의 PID를 기록한다.
이를 응용해서 kill 명령어로 inetd에 HUP 옵션프로세스를 재시작 시키는 시그널을 사용해 설정 파일을 다시 읽도록 할 수 있다.
# kill -HUP `cat /var/run/intetd.pid`
/etc
디렉터리/dev
디렉터리/proc
디렉터리프로세스 파일 시스템프로세스를 파일 시스템에 표현한 것이 있다.
예를 들어 PID가 1인 프로세스의 정보는 /proc/1
을 보면 된다.
cat 명령어 등을 사용하면 프로세스들의 다양한 정보를 실시간으로 얻을 수 있다.
/pro
c에서 ls 명령어를 실헹하면 숫자 외의 디렉터리도 있다.
이름이 숫자인 디렉터리는 프로세스에 대응되지만 그외의 파일은 프로세스와 관계가 없다.
예를 들어 /proc/scsi
에는 시스템에 연결된 SCSI 디바이스의 정보가 있고 /proc/partitions
에는 시스템에 존재하는 파티션의 목록이 있다.
반대로 커널에 뭔가를 지정하도록 응용할 수 있다.
예를 들어 /proc/sys/kernel/hostname
파일을 읽으면 현재 호스트의 이름을 수정할 수 있다.
프로세스 파일 시스템의 각 파일이 역할과 형식은 man 5 proc
에서 확인할 수 있다.
/sys
디렉터리/sys
이다./boot
디렉터리/boot
에 보관한다./root
디렉터리/tmp
, /var/tmp
디렉터리/tmp
를 사용한다./tmp
밑에 저장하고 다음 과정을 수행한다./tmp
는 리부팅하면 삭제될 수 있으나 /var/tmp
는 리부팅해도 삭제되지 않는다./var/tmp
에 저장된다./home/사용자명
이지만 큰 조직에서는 /home1
, /home2
처럼 뒤에 숫자를 붙이기도 한다.디렉터리를 구분하는 기준은 다음과 같다.
관점 | O | X |
---|---|---|
복수의 호스트에서 공유하는지 여부 | /usr | /var |
읽기 전용인지 여부 | /usr | /var |
아키텍처에 의존적인지 여부 | /usr/lib | /usr/share |
배포자가 관리하는지 여부 | /usr | /usr/local |
리부팅해도 남아 있는지 여부 | /var/tmp | /tmp |
이외의 중요한 관점으론 다음이 있다.
- 백업이 필요한지 여부불변성, 복구 필요성
- 사용자별로 필요한지, 시스템당 하나만 있으면 되는지 여부ex) 설정파일
- 권한을 나눠야 하는지 여부
- 셸에서 glob 패턴와일드카드 문자를 사용하여 다수의 파일 집합을 지정하는 방식으로 저장할 수 있으면 편리한지 여부