이 기사에서는 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 및 그림과 항상 정확히 같지는 않을 수도 있다. 특히, 여기서 보여주는 출력 중 다수는 사용한 시스템에 이미 설치되어 있는 패키지에 따라 크게 다르다. 따라서 독자 자신의 출력 결과가 이 기사에서 소개한 출력 결과와 다소 다를 수 있겠지만, 중요한 공통점을 인식할 수 있어야 한다.
FHS(파일 시스템 계층 구조 표준)는 Linux 또는 다른 UNIX®와 같은 시스템에 있는 디렉토리의 공통 레이아웃을 지정하는 문서이다. FHS를 통해 Linux 배포 환경의 동일한 일반 위치에 파일을 둠으로써 배포에 독립적으로 단순한 방법으로 소프트웨어를 개발할 수 있다. FHS는 Linux Standard Base(참고자료 참조)에서도 사용된다. 사용자와 소프트웨어 모두 FHS를 통해 설치된 파일과 디렉토리의 위치를 예측할 수 있다. FHS를 준수하는 파일 시스템에서는 대부분의 UNIX 파일 시스템에서 제공하는 기본적인 보안 기능이 운영 체제에서 지원되는 것으로 가정한다.
FHS의 핵심은 다음과 같이 파일의 두 가지 독립적 특성이다.
- 공유 가능/공유 불가능
- 공유 가능한 파일은 한 시스템에 있더라도 다른 시스템에서도 사용할 수 있지만, 공유 불가능한 파일은 그 파일을 사용할 시스템에 있어야 한다.
- 정적/가변적
- 정적 파일은 패키지 설치 또는 업그레이드와 같은 시스템 관리자의 작업을 통해서만 변경되고, 이런 파일로는 설명서, 라이브러리 및 2진 파일이 포함된다. 가변적 파일은 사용자와 시스템 프로세스에 의해 변경될 수 있는 로그, 스풀 파일, 데이터베이스, 사용자 데이터 등의 다른 모든 파일이다.
이런 차이가 있기 때문에 여러 가지 특성이 다른 파일을 다른 파일 시스템에 저장할 수 있다. 표 1은 FHS를 준수하는 레이아웃을 보여주는 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개를 넘는 경우도 자주 볼 수 있다. 다음 네 섹션에서는 이처럼 방대한 데이터의 바다에서 파일, 특히 프로그램을 찾는 데 도움이 되는 도구들을 살펴본다.
여러 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) |
이전 섹션에서는 fdisk 명령을 실행하려 했는데 이 명령을 사용할 수 없었던 이유를 살펴봤다. 하지만, 명령 이름을
입력한 경우 실제로 어떤 명령이 실행되는지 쉽게 확인할 수 있는 다른 유용한 여러 가지 명령이 있다.
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
|
쉘 내장 명령과 같이 which 명령으로 찾지 못하는 명령이 몇 가지 있다. type 명령은
주어진 명령 문자열이 실행을 위해 어떻게 평가될 것인지 알려주는 내장 명령이다. Listing 6에서는 which 및
type을 사용하여 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 명령을 사용할 수 있다. 예를 들어, 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에서 사용하는 고정 경로를 변경하는 방법은 매뉴얼 페이지를 참조한다.
본 시리즈의 이전 기사인 "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에서 리턴되는 전체 경로와 일치해야 하며, 정규식과 와일드카드 사이의 차이점을 기억한다.
find 명령을 실행할 때마다 사용자가 지정하는 모든 디렉토리가 검색된다. 검색 속도를 높이려면 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 |
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의 목표는 루트 파일 시스템을 최대한 작게 유지하는 것이다. 하지만, 루트 파일 시스템에는 노련한 관리자가 이런 작업을 하기 위해 필요한 유틸리티를 포함하여, 시스템을 부팅, 복원, 복구 또는 수리하는 데 필요한 모든 파일이 있어야 한다. 시스템을 부팅하려면 루트 파일 시스템에 다른 파일 시스템을 마운트할 수 있을 만큼 충분한 파일이 있어야 한다.
표 2는 FHS에 따라 루트(또는 /) 파일 시스템에 요구되는 디렉토리의 용도를 나타낸 것이다. 해당 서브시스템이 있는 경우에만 필요하여 선택사항으로 표시되는 것을 제외하면, 디렉토리나 디렉토리에 대한 기호 링크가 있어야 한다.
| 디렉토리 | 용도 |
|---|---|
| bin | 필수 명령 2진 파일 |
| boot | 부트 로더의 정적 파일 |
| dev | 장치 파일 |
| etc | 특정 호스트에 적합한 시스템 구성 |
| lib | 필수 공유 라이브러리 및 커널 모듈 |
| media | 이동식 매체용 마운트 지점 |
| mnt | 파일 시스템을 임시로 마운트하기 위한 마운트 지점 |
| opt | 추가 기능 애플리케이션 소프트웨어 패키지 |
| sbin | 필수 시스템 2진 파일 |
| srv | 이 시스템에서 제공하는 서비스를 위한 데이터 |
| tmp | 임시 파일 |
| usr | 보조 계층 구조 |
| var | 변수 데이터 |
| home | 사용자 홈 디렉토리(선택사항) |
| lib<qual> | 대체 형식 필수 공유 라이브러리(선택사항) |
| root | 루트 사용자용 홈 디렉토리(선택사항) |
/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 101 및
LPI 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)를 효과적으로 구현하는 방법을 배울 수 있다.
토론
- 포럼에 참여하기.
- My developerWorks 커뮤니티에 참여하자.
개발자 중심 블로그, 포럼, 그룹 및 Wiki 검색 중에 다른 developerWorks
사용자와 의견을 교환해 보자.
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.