메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

Learn Linux, 101: 시스템 파일 찾기 및 배치

FHS(Filesystem Hierarchy Standard)에서의 위치 찾기

Ian Shields, Senior Programmer, IBM
Ian Shields works on a multitude of Linux projects for the developerWorks Linux zone. He is a Senior Programmer at IBM at the Research Triangle Park, NC. He joined IBM in Canberra, Australia, as a Systems Engineer in 1973, and has since worked on communications systems and pervasive computing in Montreal, Canada, and RTP, NC. He has several patents and has published several papers. His undergraduate degree is in pure mathematics and philosophy from the Australian National University. He has an M.S. and Ph.D. in computer science from North Carolina State University. Learn more in Ian's profile on My developerWorks.

요약:  Linux® 시스템에서 FHS(Filesystem Hierarchy Standard, 파일 시스템 계층 구조 표준)에 따라 파일의 정확한 위치를 확인하고 중요한 파일과 명령을 찾는 법을 학습합니다. 본 기사의 자료를 활용하여 Linux 시스템 관리지 인증을 위한 LPI 101 시험에 대비한 공부를 하거나, 단순히 파일 조직 및 관리에 대한 호기심을 충족시킬 수 있습니다.

이 연재 자세히 보기

원문 게재일:  2010 년 6 월 09 일 번역 게재일:   2010 년 7 월 27 일
난이도:  중급 영어로:  보기 PDF:  A4 and Letter (55KB | 13 pages)Get Adobe® Reader®
페이지뷰:  4170 회
의견:  


이 시리즈의 정보

본 기사 시리즈를 통해 Linux 시스템 관리 작업을 배울 수 있다. 또한, 이 기사에 소개된 자료를 이용해 Linux Professional Institute Certification 레벨 1(LPIC-1) 시험 준비를 할 수 있다.

본 시리즈의 각 기사에 대한 설명과 링크는 developerWorks roadmap for LPIC-1을 참조한다. 이 로드맵은 현재 진행 중이며, 최근(2009년 4월)의 LPIC-1 시험 목적을 반영한다. 기사 작성을 완료하면 해당 기사를 로드맵에 추가한다. 한편, LPI certification exam prep tutorials에서는 2009년 4월 이전의 LPIC-1과 관련된 유사한 자료의 이전 버전을 찾을 수 있다.

개요

이 기사에서는 FHS(Filesystem Hierarchy Standard)에 대해 배울 수 있으며, 다루는 내용은 다음과 같다.

  • FHS에서 파일을 배치할 곳을 인식
  • Linux 시스템에서 파일 및 명령 찾기
  • FHS에 정의된 다른 중요한 파일과 디렉토리 찾기 및 이들의 용도 이해

본 기사는 Linux Professional Institute의 Junior Level Administration(LPIC-1) 시험 101에서 Topic 104의 Objective 104.7에 대비하는 데 도움이 된다. 이 목적의 가중치는 2이다.

선수 조건

본 시리즈에 수록된 기사를 최대한 활용하려면 Linux에 대한 기본적인 지식과 이 기사에서 다루는 명령을 실습할 수 있는 Linux 시스템이 있어야 한다. 때때로 같은 프로그램이라도 버전이 다르면 출력 형식이 다르므로, 실습 결과가 이 기사에서 보여주는 Listing 및 그림과 항상 정확히 같지는 않을 수도 있다. 특히, 여기서 보여주는 출력 중 다수는 사용한 시스템에 이미 설치되어 있는 패키지에 따라 크게 다르다. 따라서 독자 자신의 출력 결과가 이 기사에서 소개한 출력 결과와 다소 다를 수 있겠지만, 중요한 공통점을 인식할 수 있어야 한다.


파일 시스템 계층 구조 표준

Ian과 연락하기

Ian은 가장 인기있고 많은 글을 쓰는 저자 중 한 명이다. developerWorks에 실린Ian의 모든 기사를 살펴보자. My developerWorks에서 Ian의 프로파일을 볼 수 있으며 Ian과 다른 저자 및 그를 좋아하는 여러 독자와 연락할 수 있다.

FHS(파일 시스템 계층 구조 표준)는 Linux 또는 다른 UNIX®와 같은 시스템에 있는 디렉토리의 공통 레이아웃을 지정하는 문서이다. FHS를 통해 Linux 배포 환경의 동일한 일반 위치에 파일을 둠으로써 배포에 독립적으로 단순한 방법으로 소프트웨어를 개발할 수 있다. FHS는 Linux Standard Base(참고자료 참조)에서도 사용된다. 사용자와 소프트웨어 모두 FHS를 통해 설치된 파일과 디렉토리의 위치를 예측할 수 있다. FHS를 준수하는 파일 시스템에서는 대부분의 UNIX 파일 시스템에서 제공하는 기본적인 보안 기능이 운영 체제에서 지원되는 것으로 가정한다.

두 가지 독립적인 FHS 카테고리

FHS의 핵심은 다음과 같이 파일의 두 가지 독립적 특성이다.

공유 가능/공유 불가능
공유 가능한 파일은 한 시스템에 있더라도 다른 시스템에서도 사용할 수 있지만, 공유 불가능한 파일은 그 파일을 사용할 시스템에 있어야 한다.
정적/가변적
정적 파일은 패키지 설치 또는 업그레이드와 같은 시스템 관리자의 작업을 통해서만 변경되고, 이런 파일로는 설명서, 라이브러리 및 2진 파일이 포함된다. 가변적 파일은 사용자와 시스템 프로세스에 의해 변경될 수 있는 로그, 스풀 파일, 데이터베이스, 사용자 데이터 등의 다른 모든 파일이다.

이런 차이가 있기 때문에 여러 가지 특성이 다른 파일을 다른 파일 시스템에 저장할 수 있다. 표 1은 FHS를 준수하는 레이아웃을 보여주는 FHS 문서에서 발췌한 예다.

표 1. FHS의 예
공유 가능공유 불가능
정적 /usr
/opt
/etc
/boot
가변적 /var/mail
/var/spool/news
/var/run
/var/lock

파일의 위치

Linux 시스템에는 수십만 개의 파일이 들어 있는 경우가 흔하다. 필자가 최근에 설치한 64비트 Fedora 13 시스템에는 /usr 계층 구조에만 무려 75,000여 개의 파일이 있다. 필자가 설치한 다른 시스템을 보더라도 대부분 100,000개 이상의 파일이 있고 200,000개를 넘는 경우도 자주 볼 수 있다. 다음 네 섹션에서는 이처럼 방대한 데이터의 바다에서 파일, 특히 프로그램을 찾는 데 도움이 되는 도구들을 살펴본다.


PATH에 무엇이 있는가

여러 Linux 시스템을 사용해본 적이 있다면, 루트 권한으로 로그인하는 경우 사용자로 로그인할 때는 실행할 수 없는 fdisk와 같은 명령을 실행할 수 있다는 사실을 알아차렸을 수 있을 것이다. 명령행에서 프로그램을 실행하면 bash 쉘이나 다른 쉘에서 디렉토리 목록을 검색하여 요청한 프로그램을 찾는다. 디렉토리 목록은 PATH 환경 변수에서 지정되고, 루트 사용자가 아닌 사용자의 경로에는 그렇지 않지만 루트 경로에 /sbin이 포함될 수 있다. Listing 1은 루트 경로 예제뿐 아니라, 두 가지 다른 배포 버전의 사용자 경로 예제를 나타낸 것이다.


Listing 1. 몇 가지 PATH 예제
ian@pinguino:~$ # An Ubuntu 9.10 system
ian@pinguino:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

[ian@echidna ~]$ # An openSUSE 11.2 system
ian@attic4:~> echo $PATH
/usr/lib64/mpi/gcc/openmpi/bin:/home/ian/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/u
sr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin

[root@echidna ~]# # And as root
attic4:~ # echo $PATH
/usr/lib64/mpi/gcc/openmpi/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/
usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/b
in:/usr/lib/mit/sbin

여기서 볼 수 있듯이, PATH 변수는 콜론으로 구분되는 디렉토리 이름의 목록에 불과하다. fdisk 명령이 실제로는 /sbin/fdisk에 있으므로, 이들 경로 중 첫 번째와 마지막 경로에서만 사용자가 완전한 이름(/sbin/fdisk)을 입력하지 않고 fdisk를 입력하여 이 명령을 실행할 수 있다.

보통, 사용자의 경로는 .bash_profile 또는 .bashrc와 같은 초기화 파일에 설정된다. 새 경로를 지정하면 현재 bash 프로세스에 대한 경로를 변경할 수 있다. 이 경로에서 시작하는 다른 프로세스에서 새 값을 사용할 수 있게 하려면 PATH 변수를 내보내야 한다. Listing 2에 예제가 표시되어 있다.


Listing 2. PATH 변경
                    
ian@attic4:~> fdisk
Absolute path to 'fdisk' is '/sbin/fdisk', so running it may require superuser privileges
 (e.g. root).
ian@attic4:~> export PATH=/sbin:$PATH
ian@attic4:~> fdisk

Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda  (for the first IDE disk)
  or: fdisk /dev/sdc  (for the third SCSI disk)
  or: fdisk /dev/eda  (for the first PS/2 ESDI drive)
  or: fdisk /dev/rd/c0d0  or: fdisk /dev/ida/c0d0  (for RAID devices)


which, type, whereis 명령

이전 섹션에서는 fdisk 명령을 실행하려 했는데 이 명령을 사용할 수 없었던 이유를 살펴봤다. 하지만, 명령 이름을 입력한 경우 실제로 어떤 명령이 실행되는지 쉽게 확인할 수 있는 다른 유용한 여러 가지 명령이 있다.

which 명령

which 명령을 사용하여 경로를 검색하고 명령을 입력할 때 어떤 명령이 실행될 것인지 찾아낼 수 있다. Listing 3은 fdisk 명령을 찾는 예제를 나타낸 것이다.


Listing 3. which 사용
                     
ian@attic4:~> which fdisk
which: no fdisk in (/usr/lib64/mpi/gcc/openmpi/bin:/home/ian/bin:/usr/local/bin:/usr/bin:
/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/
lib/mit/sbin)
ian@attic4:~> export PATH=/sbin:$PATH
ian@attic4:~> which fdisk
/sbin/fdisk

which 명령을 실행하면 경로에서 어떤 명령의 첫 항목을 볼 수 있다. 해당 명령이 여러 번 나타나는지 알려면 Listing 4에 표시된 것처럼 -a 옵션을 추가한다.


Listing 4. which를 사용하여 여러 항목 찾기
                    
ian@attic4:~> which awk
/usr/bin/awk
ian@attic4:~> which -a awk
/usr/bin/awk
/bin/awk
/usr/bin/X11/awk
            

여기서는 /usr/bin(시스템에서 명령을 위한 주 디렉토리), /bin(시스템 관리자와 사용자가 모두 사용할 수 있지만 다른 파일 시스템이 마운트되지 않았을 때 반드시 필요한 명령이 들어 있는 디렉토리), /usr/bin/X11(X Window System용 2진 파일이 들어 있는 디렉토리)의 세 곳에서 awk 명령을 찾을 수 있다.

본 시리즈의 다른 기사인 "Learn Linux 101: Create and change hard and symbolic links"에서는 Listing 5에 표시된 것처럼 이런 세 가지 다른 파일이 모두 결국은 동일한 기본 gawk 명령을 나타내는지 확인하는 방법을 보여준다.


Listing 5. Awk 명령이 gawk로 이어짐
                    
ian@attic4:~> ls -l $(which -a awk)
lrwxrwxrwx 1 root root 4 2010-02-09 00:46 /bin/awk -> gawk
lrwxrwxrwx 1 root root 8 2010-02-09 00:46 /usr/bin/awk -> /bin/awk
lrwxrwxrwx 1 root root 8 2010-02-09 00:46 /usr/bin/X11/awk -> /bin/awk
            

type 명령

쉘 내장 명령과 같이 which 명령으로 찾지 못하는 명령이 몇 가지 있다. type 명령은 주어진 명령 문자열이 실행을 위해 어떻게 평가될 것인지 알려주는 내장 명령이다. Listing 6에서는 whichtype을 사용하여 type 명령이 해당 경로에서 찾을 수 있는 실행 명령은 아니지만, 쉘 내장 명령이라는 점을 보여준다.


Listing 6. type 사용
                   
ian@attic4:~> which type
which: no type in (/usr/lib64/mpi/gcc/openmpi/bin:/home/ian/bin:/usr/local/bin:/usr/bin:/
bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/l
ib/mit/sbin)
ian@attic4:~> type type
type is a shell builtin
            

whereis 명령

단순한 프로그램 위치 이상의 자세한 정보를 원한다면, whereis 명령을 사용할 수 있다. 예를 들어, Listing 7에 표시된 것처럼 매뉴얼 페이지나 다른 정보를 찾을 수 있다.


Listing 7. whereis를 사용하여 매뉴얼 페이지 찾기
                    
ian@attic4:~> whereis awk
awk: /bin/awk /usr/bin/awk /usr/lib64/awk /usr/bin/X11/awk /usr/share/awk 
/usr/share/man/man1/awk.1.gz /usr/share/man/man1p/awk.1p.gz
            

/sbin에서 awk의 사본은 whereis로 찾지 못했다는 점에 주의하자. whereis에서 사용하는 디렉토리는 고정되어 있으므로, 이 명령으로 항상 찾고 있는 정보를 찾을 수 있는 것은 아니다. whereis 명령으로 소스 파일을 검색하고 대체 검색 경로를 지정하고 특이한 항목을 검색할 수도 있다. 이 작동을 대체하거나 whereis에서 사용하는 고정 경로를 변경하는 방법은 매뉴얼 페이지를 참조한다.


find 명령

본 시리즈의 이전 기사인 "Learn Linux 101: File and directory management"에서 이름(와일드카드 포함), 경로, 크기 또는 시간소인을 기준으로 파일을 찾는 방법을 설명했다. 또 다른 기사인 "Learn Linux 101: Create and change hard and symbolic links"에서는 특정 파일이나 inode에 대한 링크를 찾는 방법을 설명했다.

find 명령은 Linux 시스템의 파일 검색 도구 중에서도 스위스 군용 칼처럼 쓰임새가 다양한 도구이다. 유용하게 쓸 수 있는 다른 두 가지 기능은 사용자 또는 그룹 이름을 기준으로 파일을 찾는 기능과 권한을 바탕으로 파일을 찾는 기능이다.

사용자가 /tmp 계층 구조에 어떤 파일을 가지고 있는지 보려는 경우를 생각해보자. Listing 8은 루트 사용자가 /tmp에서 사용자 ian이 가진 모든 파일을 찾는 방법을 나타낸 것이다.


Listing 8. 사용자 및 그룹별로 파일 찾기
                    
attic4:~ # find /tmp -user ian
/tmp/kde-ian
/tmp/kde-ian/closeditems
/tmp/kde-ian/closeditems/_1.66
/tmp/kde-ian/systemsettingsR27913.tmp
/tmp/.ICE-unix/2288
/tmp/orbit-ian
/tmp/orbit-ian/linc-12f7-0-33cb4ce9b1fbf
/tmp/orbit-ian/linc-7d00-0-70e5ebaa4ddac
/tmp/orbit-ian/linc-12ea-0-68260abbd2051
/tmp/orbit-ian/linc-12ea-0-3377ca55c0bd2
/tmp/ksocket-ian
/tmp/ksocket-ian/klauncherMT2183.slave-socket
...

-group 테스트를 사용하여 그룹별로 파일을 찾을 수도 있다. -nouser-nogroup 옵션을 사용하면 시스템에서 어떤 사용자나 그룹에도 속하지 않는 파일을 찾을 수 있다. 다른 테스트와 마찬가지로, !를 사용하여 테스트를 부정할 수 있다. 필자는 보통 사용자 번호를 1000으로 설정하는데, 일부 시스템의 기본값이 1000이기 때문이다. 또한, 필자는 그룹 번호가 1000인 ian이라는 그룹도 만든다. 다른 시스템들은 아직도 500에서 시작하거나 기본적으로 '사용자' 그룹에 새 사용자를 포함시킨다. Red Hat 6.2 시스템부터 보관된 필자의 예전 연구 자료 중 일부에는 아직도 사용자 500이 있다. Listing 9는 내 현재 사용자 그룹에서 소유하고 있지 않은 일부 디렉토리를 찾는 방법을 나타낸 것이다. research/rh62/involution은 사용자 500과 그룹 4에서 소유하고 있고, 이 둘 다 필자의 현재 시스템에는 존재하지 않는다. 숫자로 된 사용자 ID나 그룹 ID로 파일이나 디렉토리를 찾으려면 -uid 또는 -gid 테스트를 이용한다.


Listing 9. ian이 소유하지 않은 디렉토리 찾기
                    
ian@attic4:~> find -L research -maxdepth 2 -type d ! -group ian
research/rh62/involution
research/rh62/programs
research/lost+found
find: `research/lost+found': Permission denied
ian@attic4:~> ls -ld research/rh62/involution
drwxr-xr-x. 2 500 4 4096 1999-11-10 08:09 research/rh62/involution

권한별로 파일을 찾으려면 chmod 또는 umask 명령과 함께 사용하는 것과 유사한 기호 표현식 외에 -perm 테스트를 사용할 수 있다. 정확한 권한을 검색할 수 있지만, 파일에 그런 권한을 설정하기를 원하고 다른 권한에 대해서는 관심이 없음을 나타내기 위해 권한 표현식의 접두부에 하이픈을 사용하는 것이 더 유용할 때가 많다. Listing 10은 사용자, 그룹 및 모든 사람이 실행할 수 있는 파일을 찾는 방법과 다른 사람이 읽을 수 없는 파일을 찾는 두 가지 다른 방법을 나타낸 것이다.


Listing 10. 권한별로 파일 찾기
                    
ian@attic4:~> find . -maxdepth 1 -type f -perm -uga=x
./.xinitrc.template
ian@attic4:~> ls -l ./.xinitrc.template
-rwxr-xr-x 1 ian users 1446 2010-02-09 08:55 ./.xinitrc.template
ian@attic4:~> find . -maxdepth 1 ! -perm  -o=r
./.Xauthority
./.pulse
...
ian@attic4:~> find . -maxdepth 1 ! -perm  -0004
./.Xauthority
./.pulse
...

지금까지 find 명령으로 할 수 있는 여러 가지 주요 검색 유형을 설명했다. 출력 범위를 더 좁히려면 여러 표현식을 결합하고, 이렇게 결합된 표현식에 정규식을 추가하면 된다. 이 유용하고 다양한 기능을 가진 명령에 대한 자세한 내용은 매뉴얼 페이지를 참조한다. 또는 info 시스템이 설치되어 있다면 info find를 사용하는 것이 더 나은 방법이다.

Listing 11은 find로 검색하는 마지막 예제를 나타낸 것이다. 이 예제에서는 /usr/include로의 cd를 수행하여 목록의 길이를 관리 가능한 상태로 유지하고, 대/소문자에 관계없이 경로 이름에 packet이 포함된 파일을 전부 찾는다. 두 번째 예제에서는 디렉토리가 아니면서 크기가 최소한 1,500바이트 이상인 파일로 출력 결과의 범위를 더욱 좁힌다. 시스템 상의 실제 출력은 어떤 패키지를 설치했는지에 따라 다를 수 있다.


Listing 11. find의 마지막 예제
                    
ian@attic4:/usr/include> find . -iregex ".*packet.*"
./c++/4.4/java/net/DatagramPacket.h
./c++/4.4/gnu/classpath/jdwp/processor/PacketProcessor.h
./c++/4.4/gnu/classpath/jdwp/transport/JdwpPacket.h
./c++/4.4/gnu/classpath/jdwp/transport/JdwpReplyPacket.h
./c++/4.4/gnu/classpath/jdwp/transport/JdwpCommandPacket.h
./netpacket
./netpacket/packet.h
./net/if_packet.h
./linux/if_packet.h
ian@attic4:/usr/include> find . -iregex ".*packet.*" ! -type d -size +1500c
./c++/4.4/java/net/DatagramPacket.h
./c++/4.4/gnu/classpath/jdwp/transport/JdwpPacket.h
./netpacket/packet.h
./linux/if_packet.h

정규식은 find에서 리턴되는 전체 경로와 일치해야 하며, 정규식과 와일드카드 사이의 차이점을 기억한다.


locate 및 updatedb 명령

find 명령을 실행할 때마다 사용자가 지정하는 모든 디렉토리가 검색된다. 검색 속도를 높이려면 locate라는 다른 명령을 사용하면 되는데, 이 명령을 실행하면 매번 파일 시스템을 검색하지 않고 저장된 경로 정보의 데이터베이스를 사용한다.

locate 명령

locate 명령을 실행하면 보통 cron 작업으로 매일 업데이트되는 데이터베이스에서 일치하는 파일이 검색된다.

locate 명령은 파일 이름만이 아니라, 경로 이름 중 일부라도 일치하는 부분이 있는지 찾는 역할을 한다. 파일 이름을 작은따옴표 안에 넣은 다음 최소 하나 이상의 와일드카드 사용 문자를 포함시켜 더 정확히 일치시킨다. Listing 12는 bin/ls 문자열을 포함한 경로를 찾는 방법과 와일드카드 사용 문자를 이용해 출력 범위를 좁히는 두 가지 예를 나타낸 것이다.


Listing 12. locate를 사용하여 경로 찾기 및 출력 제한
                    
ian@attic4:~> locate /bin/ls
/bin/ls
/bin/lsmod
/usr/bin/lsattr
/usr/bin/lsb_release
/usr/bin/lscpu
/usr/bin/lsdev
/usr/bin/lshal
/usr/bin/lsof
/usr/bin/lsscsi
/usr/bin/lsusb
ian@attic4:~> locate '\/bin/ls'
/bin/ls
ian@attic4:~> locate '/bin/ls*'
/bin/ls
/bin/lsmod

updatedb 명령

locate에서 사용하는 기본 데이터베이스는 /var/lib/locatedb와 같은 위치에 있는 /var 파일 시스템에 저장된다. 이것은 slocate 또는 mlocate 패키지를 사용하여 추가 보안 또는 속도를 제공하는 시스템에서 다를 수 있다. Listing 13에 표시된 것처럼 locate -S를 사용하여 locate 데이터베이스에서 통계 정보를 찾을 수 있다.


Listing 13. Locatedb 통계
                    
ian@attic4:~> locate -S
Database /var/lib/locatedb is in the GNU LOCATE02 format.
Locate database size: 3011297 bytes
All Filenames: 259149
File names have a cumulative length of 15751703 bytes.
Of those file names,

        11421 contain whitespace,
        0 contain newline characters,
        and 0 contain characters with the high bit set.
        Compression ratio 80.88% (higher is better)

데이터베이스는 updatedb 명령을 사용하여 작성되거나 업데이트된다. 이것은 보통 매일 cron 작업으로 실행된다. /etc/updatedb.conf 파일(또는 때로는 /etc/sysconfig/locate)은 updatedb의 구성 파일이다. 매일 업데이트를 수행하려면 루트 사용자가 /etc/updatedb.conf를 편집하고 DAILY_UPDATE=yes를 설정해야 한다. 데이터베이스를 즉시 작성하려면 updatedb 명령을 루트로 실행한다.

locate를 사용하기 위한 다른 고려사항으로는 매일 updatedb 데이터베이스의 빌드를 위한 보안 고려사항과 네트워크 파일 I/O 고려사항이 포함된다. 자세한 내용은 매뉴얼 페이지와 updatedb 구성 파일을 확인한다.


루트 파일 시스템의 FHS 디렉토리

FHS의 목표는 루트 파일 시스템을 최대한 작게 유지하는 것이다. 하지만, 루트 파일 시스템에는 노련한 관리자가 이런 작업을 하기 위해 필요한 유틸리티를 포함하여, 시스템을 부팅, 복원, 복구 또는 수리하는 데 필요한 모든 파일이 있어야 한다. 시스템을 부팅하려면 루트 파일 시스템에 다른 파일 시스템을 마운트할 수 있을 만큼 충분한 파일이 있어야 한다.

표 2는 FHS에 따라 루트(또는 /) 파일 시스템에 요구되는 디렉토리의 용도를 나타낸 것이다. 해당 서브시스템이 있는 경우에만 필요하여 선택사항으로 표시되는 것을 제외하면, 디렉토리나 디렉토리에 대한 기호 링크가 있어야 한다.

표 2. FHS 루트 파일 시스템
디렉토리용도
bin 필수 명령 2진 파일
boot 부트 로더의 정적 파일
dev 장치 파일
etc 특정 호스트에 적합한 시스템 구성
lib 필수 공유 라이브러리 및 커널 모듈
media 이동식 매체용 마운트 지점
mnt 파일 시스템을 임시로 마운트하기 위한 마운트 지점
opt 추가 기능 애플리케이션 소프트웨어 패키지
sbin 필수 시스템 2진 파일
srv 이 시스템에서 제공하는 서비스를 위한 데이터
tmp 임시 파일
usr 보조 계층 구조
var 변수 데이터
home 사용자 홈 디렉토리(선택사항)
lib<qual> 대체 형식 필수 공유 라이브러리(선택사항)
root 루트 사용자용 홈 디렉토리(선택사항)

/usr 및 /var 계층 구조

/usr 및 /var 계층 구조는 매우 복잡하기 때문에, FHS에 이 두 계층 구조에 대해서만 다룬 완전히 독립된 섹션이 있을 정도이다. /usr 파일 시스템은 공유 가능한 읽기 전용 데이터를 포함한 파일 시스템의 두 번째 주요 섹션이다. 현재로서는 자주 그렇게 하지는 않지만, 시스템 간에 이 파일 시스템을 공유할 수 있다.

/var 파일 시스템에는 스풀 디렉토리와 파일, 관리 및 로깅 데이터, 비영속 및 임시 파일을 포함한 변수 데이터 파일이 들어 있다. /var의 일부는 다른 시스템 간에 공유할 수 없지만, /var/mail, /var/cache/man, /var/cache/fonts 및 /var/spool/news와 같은 다른 부분은 공유할 수 있다.

이 표준을 완벽히 이해하려면 FHS 문서를 정독하기 바란다(참고자료 참조).


참고자료

교육

  • developerWorks roadmap for LPIC-1을 통해 2009년 4월의 시험 목적을 바탕으로 LPIC-1 인증 시험 공부에 도움이 되는 developerWorks 기사를 찾을 수 있다.

  • LPIC Program 사이트에서는 Linux Professional Institute에서 실시하는 세 가지 레벨의 Linux 시스템 관리 인증 시험에 대비한 자세한 시험 목적, 작업 목록 및 샘플 문제를 찾을 수 있다. 특히, LPI exam 101LPI exam 102에 대한 2009년 4월 시험 목적을 확인한다. 항상 LPIC Program 사이트를 참조하여 최신 목적을 확인한다.

  • Linux 기초를 학습하고 2009년 4월 이전의 LPI 시험 목적을 바탕으로 한 시스템 관리자 인증 시험을 준비하려면 developerWorks에서 전체 LPI exam prep series를 검토한다.

  • FHS(Filesystem Hierarchy Standard) 홈 페이지를 방문한다.

  • 표준 2진 운영 환경을 개발하기 위한 FSG(Free Standards Group) 프로젝트인 LSB(Linux Standard Base)에 관해 학습한다.

  • Linux Documentation Project에는 다양한 종류의 유용한 문서, 특히 HOWTO 문서가 있다.

  • 리눅스에서는 수백 개의 기술자료 목록과 함께, Linux 개발자와 관리자를 위한 다양한 다운로드, 토론 포럼 및 다른 참고자료를 찾을 수 있다.

  • developerWorks 기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 업계의 주제에 관한 최신 정보를 볼 수 있다.

  • 무료 developerWorks Live! briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.

  • developerWorks on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.

  • Twitter의 developerWorks를 팔로우(follow)하거나 developerWorks에 대한 Linux 트윗(tweet)의 피드를 구독하자.

제품 및 기술 얻기

  • 자신에게 가장한 적합한 방법으로 IBM 제품을 평가해 보자. 시험판 제품을 다운로드하거나, 온라인으로 제품을 사용해 보거나, 클라우드 환경에서 제품을 사용하거나, SOA Sandbox에서 SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.

토론

필자소개

Ian Shields works on a multitude of Linux projects for the developerWorks Linux zone. He is a Senior Programmer at IBM at the Research Triangle Park, NC. He joined IBM in Canberra, Australia, as a Systems Engineer in 1973, and has since worked on communications systems and pervasive computing in Montreal, Canada, and RTP, NC. He has several patents and has published several papers. His undergraduate degree is in pure mathematics and philosophy from the Australian National University. He has an M.S. and Ph.D. in computer science from North Carolina State University. Learn more in Ian's profile on My developerWorks.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=리눅스
ArticleID=502206
ArticleTitle=Learn Linux, 101: 시스템 파일 찾기 및 배치
publish-date=06092010
author1-email=ishields@us.ibm.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.