서버/Linux I 2016. 1. 27. 13:50

Linux I - 15. 디렉토리 구조

 

 

 

login as: root
root@192.168.1.2's password:
Last login: Wed Jan 27 13:28:09 2016 from 192.168.1.1
[root@CentOS /root]#

 

 

 

리눅스는 트리 구조로 디렉토리를 구성하며, 명령어, 내용, 사용 권한에 따라서 디렉토리가 구분되어 있다. 또한 FHS(Filesystem Hierarchy Standard)라는 표준 파일 시스템 계층을 사용하고 있기 때문에 같은 목적의 파일들을 같은 디렉토리로 관리하여 시스템 자원 및 프로그램들을 쉽게 찾을 수 있다. 리눅스에서 사용하는 대표적인 디렉토리는 다음과 같다.

 

 

 [디렉토리 유형]

 /

   root 디렉토리, 디렉토리 트리 구조에서 가장 상단에 위치함

 /root

   시스템 관리자 홈 디렉토리

 /bin

   일반 사용자가 사용하는 기본 명령어들이 있는 디렉토리

 /sbin

   관리자가 사용하는 시스템 관리 명령어들이 있는 디렉토리 

 /etc

   환경 설정 파일 및 디렉토리를 갖고 있는 디렉토리

 /usr

   프로그램들이 설치되는 디렉토리

 /boot

   부트로더와 부팅을 위한 파일이 있는 디렉토리

 /dev

   장치 파일들이 있는 디렉토리

 /var

   시스템 운영중에 자주 변경되는 파일들이 있는 디렉토리

 /tmp

   임시 파일들이 저장되는 디렉토리

 /proc

   프로세스 및 프로그램 정보, 메모리/하드웨어 정보 파일이 있는 디렉토리

 /lib

   공유 라이브러리와 커널 모듈이 있는 디렉토리

/mnt

   NFS와 같은 파일 시스템이 임시로 마운트하는 디렉토리

 /srv

   시스템이 제공하는 서비스를 위한 파일들이 있는 디렉토리

 /media

   USB, CD, DVD와 같은 이동식 디스크가 마운트되는 디렉토리 

/home

   시스템 계정을 위한 사용자 홈 디렉토리

 /lost+found

   부팅시 파일시스템에 문제가 발생하면, 복구할때 사용하는 디렉토리

 

 

 

1. / 디렉토리

 

root 디렉토리라고 한다. 디렉토리 구조에서 가장 상위 디렉토리이다. 어떤 디렉토리에서든 'cd /'를 실시하면, 바로 root 디렉토리로 갈 수 있다.


[root@CentOS /root]# cd /
[root@CentOS /]# cd -
[root@CentOS /]# cd /etc/yum
[root@CentOS /etc/yum]# cd /
[root@CentOS /]#

[root@CentOS /]# ls /
bin   dev  home  lib64       media  mnt  opt   root  selinux  sys  usr
boot  etc  lib   lost+found  misc   net  proc  sbin  srv      tmp  var

 

 

 

 

2. /root 디렉토리

 

root 계정의 홈 디렉토리이다. 여기에는 root 사용자 환경 파일(.bash_profile, .bashrc), 운영제체 설치 기록 파일(install.log,anaconda-ks.cfg) 들이 있다.

 

[root@CentOS /]# cd

[root@CentOS /root]# ls -a
.              .gconf           .mozilla                              home.tar.gz
..             .gconfd          .nautilus                             install.log
.ICEauthority  .gnome2          .pulse                                install.log.syslog
.abrt          .gnome2_private  .pulse-cookie                         공개
.bash_history  .gnote           .ssh                                  다운로드
.bash_logout   .gnupg           .tcshrc                               문서
.bash_profile  .gstreamer-0.10  .themes                               바탕화면
.bashrc        .gtk-bookmarks   .thumbnails                           비디오
.cache         .gvfs            .viminfo                              사진
.config        .icons           .vimrc                                음악
.cshrc         .imsettings.log  anaconda-ks.cfg                       템플릿
.dbus          .lesshst         cfile4.uf@2752A13656932BE71E15DA.rpm
.esd_auth      .local           home

 

 

 

3. /bin 디렉토리

 

일반 사용자가 사용하는 기본 명령어들이 있는 디렉토리이다. 'ls'로 열어보면 대부분 실행 파일(연두색, *)들을 볼 수 있으며, 부팅에 필요한 명령어 및 일반 사용자들도 사용할 수 있는 명령어들이 있다.

 

대표적인 명령어 : cat, chmod, chgrp, chwon, env(현재 환경 설정 내용 출력),date, ls, mkdir, rm, rmdir, touch, vi, ping...

 

[root@CentOS /root]# ls -F /bin
alsaunmute*            dnsdomainname@       kbd_mode*       ping*             sync*
arch*                  domainname@          keyctl*         ping6*            tar*
awk@                   dumpkeys*            kill*           plymouth*         taskset*
basename*              echo*                link*           ps*               tcsh*
bash*                  ed*                  ln*             pwd*              touch*
cat*                   egrep*               loadkeys*       raw*              tracepath*
chgrp*                 env*                 logger*         readlink*         tracepath6*
chmod*                 ex@                  login*          red*              traceroute*
chown*                 false*               ls*             redhat_lsb_init*  traceroute6@
cp*                    fgrep*               lsblk*          rm*               true*
cpio*                  find*                mail@           rmdir*            ulockmgr_server*
csh@                   findmnt*             mailx*          rnano@            umount*
cut*                   fusermount*          mkdir*          rpm*              uname*
dash*                  gawk*                mknod*          rvi@              unicode_start*
date*                  gettext*             mktemp*         rview@            unicode_stop*
dbus-cleanup-sockets*  grep*                more*           sed*              unlink*
dbus-daemon*           gtar@                mount*          setfont*          usleep*
dbus-monitor*          gunzip*              mountpoint*     setserial*        vi*
dbus-send*             gzip*                mv*             sh@               view@
dbus-uuidgen*          hostname*            nano*           sleep*            ypdomainname@
dd*                    ipcalc*              netstat*        sort*             zcat*
df*                    iptables-xml@        nice*           stty*
dmesg*                 iptables-xml-1.4.7@  nisdomainname@  su*

 

 

 

4. /sbin 디렉토리

 

관리자가 사용하는 시스템 관리 명령어들이 있는 디렉토리이다. 'ls'로 열어보면 대부분 실행 파일(연두색, *)들을 볼 수 있으며, 부팅에 필요한 명령어 및 일반 사용자들도 사용할 수 있는 명령어들이 있다.

 

대표적인 명령어 : ifconfig, reboot, shutdown, mount, fsck(디스크 점검), mkfs(디스크 포멧), iptables...

 

[root@CentOS /root]# ls -F /sbin
MAKEDEV*          fsck.cramfs*              iwpriv*            mount.nfs*            service*
accton*           fsck.ext2*                iwspy*             mount.nfs4@           setfiles*
addpart*          fsck.ext3*                kdump*             mount.tmpfs*          setpci*
agetty*           fsck.ext4*                kexec*             mount.vmhgfs*         setregdomain*
alsactl*          fsck.ext4dev*             killall5*          nameif*               setsysfont*
arp*              fsck.msdos@               kpartx*            netreport*            sfdisk*
arping*           fsck.vfat@                ldconfig*          new-kernel-pkg*       sgpio*
~ 중간 생략 ~


busybox*          hwclock*                  lvmconf*           portreserve*          telinit*
cbq*              ifcfg*                    lvmdiskscan@       poweroff@             tune2fs*
cfdisk*           ifconfig*                 lvmdump*           ppp-watch*            udevadm*
chcpu*            ifdown*                   lvmetad*           pvchange@             udevd*
chkconfig*        ifenslave*                lvmsadc@           pvck@                 umount.hal*
~ 중간 생략 ~

 

 

 

 

5. /etc 디렉토리

 

환경 설정 파일 및 디렉토리를 갖고 있는 디렉토리이며, 웹-서버 환경 설정, 시스템 계정 정보, 패스워드 관리, 시스템 관리, 시스템 보안, 시스템 초기화 설정, TCP/IP 설정과 같은 관리 파일과 디렉토리가 있다

 

[root@CentOS /root]# ls /etc
ConsoleKit               favicon.png       makedev.d                     readahead.conf
DIR_COLORS               festival          man.config                    redhat-lsb
DIR_COLORS.256color      filesystems       maven                         redhat-release
~ 중간 생략 ~

 

 

/etc/rc.d

시스템 부팅 및 시스템 실행 레벨 변경시 실행되는 스크립트들이 저장되어 있다. (실행 레벨은 'rc0.d ~ rc6.d' 6개 있음) 

 

/etc/passwd

사용자 계정 정보를 관리하는 파일이다. 사용자 ID, 패스워드, 그룹, 주석, 사용하는 쉘을 볼 수 있다.

 

/etc/shadow

사용자 패스워드를 암호화하여 별도로 관리하는 파일이다.

 

/etc/group

시스템 그룹에 관련된 내용을 갖고 있는 파일이다.

 

/etc/inittab

init 데몬이 관리하는 파일이다.

 

/etc/issue

로그인 메세지를 관리하는 파일이다.

 

/etc/securetty
시스템에 로그인할 수 있는 터미널에 대한 정보가 저장돠어 있는 파일이다.

 

/etc/shells

시스템에서 사용할 수 있는 쉘 정보를 저장하고 있는 파일이다.

 

/etc/fstab

파일 시스템을 관리하는 파일이다.

 

/etc/services

서비스 포트 번호를 관리하는 파일이다.

 

/etc/sysconfig/i18n

시스템에서 사용하고 있는 언어 정보를 관리하는 파일이다.

 

/etc/sysconfig/iptables

방화벽 설정 내용을 관리하는 파일이다.

 

/etc/sysconfig/network-scripts/ifcfg-eth0

Eth0 인터페이스 정보를 관리하는 파일이다.

 

 


 

6. /usr 디렉토리

 

프로그램들이 설치되는 디렉토리이며, 거의 모든 프로그램들과 이에 관련된 명령어 및 라이브러리들이 있다.

 

[root@CentOS /root]# ls /usr
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

 

/usr/bin 디렉토리

시스템에서 사용하는 프로그램에 대한 실행파일들이 있다.

 

/usr/etc 디렉토리

환경 설정 파일 및 디렉토리를 갖고 있는 디렉토리 이지만, '/etc' 디렉토리에 있는 파일처럼 필수 조건은 아니다.

 

/usr/include 디렉토리

C 언어 관련 헤더 파일들이 있다.

 

/usr/lib 디렉토리

'/usr/bin'과 '/usr/sbin'에 있는 실행 파일들을 위한 라이브러리들이 있다.

 

/usr/local 디렉토리

시스템 관리자에 의해서 별도로 설치되는 일반적인 프로그램들이 있다.

 

/usr/sbin 디렉토리

시스템 관리를 위한 명령어들이 있다.

 

/usr/share/man 디렉토리

메뉴얼 페이지 내용을 저장하고 있다

 

/usr/share/info 디렉토리

GNU 정보 문서들을 저장하고 있다.

 

/usr/share/doc 디렉토리

각종 문서들이 저장되어 있다.

 

/usr/src 디렉토리

프로그램 컴파일이 되지 않는 소스 파일들을 저장하고 있다.

 

 

 

 

7. /boot 디렉토리

 

부트로더와 부팅을 위한 파일이 있는 디렉토리이며, 리눅스 커널이 저장되어 있다. 그렇기 때문에 /boot 디렉토리 안에 있는 파일은 건드리지 않는 것을 권장한다.

 

 

[root@CentOS /root]# ls /boot
System.map-2.6.32-504.el6.x86_64     initrd-2.6.32-504.el6.x86_64kdump.img
config-2.6.32-504.el6.x86_64         lost+found
efi                                  symvers-2.6.32-504.el6.x86_64.gz
grub                                 vmlinuz-2.6.32-504.el6.x86_64
initramfs-2.6.32-504.el6.x86_64.img

[root@CentOS /root]# uname -a
Linux CentOS 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

[root@CentOS /root]# cat /boot/grub/grub.conf
~ 중간 생략 ~


default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_centos-lv_root rd_NO_LUKS LANG=ko_KR.UTF-8 rd_LVM_LV=vg_centos/lv_swap rd_NO_MD rd_LVM_LV=vg_centos/lv_root rd_NO_DM  KEYBOARDTYPE=pc KEYTABLE=ko rhgb quiet
        initrd /initramfs-2.6.32-504.el6.x86_64.img

 

 

 

8. /dev 디렉토리

 

장치 파일들이 있는 디렉토리이며, 하드디스크, 포트, 콘솔, 루프백과 같은 장치들을 파일로 생성하여 관리한다.

 

/dev/console

시스템 콘솔 파일이다.

 

/dev/hda

IDE 방식 하드 디스크이다.

 

디스크

 ├── hda (첫번째 하드 디스크)
 │       ├── hda1                      첫번째 파티션
 │       └── hda2                      두번째 파티션
 ├── hdb (두번째 하드 디스크)
 │       ├── hdb1                      첫번째 파티션
 │       └── hdb2                      두번째 파티션
 └── hdc (세번째 하드 디스크)
           ├── hdc1                      첫번째 파티션
           └── hdc2                      두번째 파티션

 

/dev/sda

SCSI 방식 하드 디스크이다.

 

/dev/lp번호

시스템 병열 포트 장치들이다.

 

/dev/tty번호

시스템 직열 포트 장치들이다.

 

/dev/null 또는 /dev/zero

이 장치로 전송된 데이터는 다 폐기된다.

 

/dev/pts 디렉토리

시스템 원격 접속(텔넷, SSH)을 위한 터미널 장치이다.

 

/dev/tty

가상 콘솔 장치이다.

 

/dev/cdrom

시디룸 드라이브 장치이다.

 

 

 

 

9. /var 디렉토리

 

시스템 운영중에 자주 변경되는 파일(시스템 로그 파일, 사용자 로그인 기록, 메일 임시 저장)들이 있는 디렉토리이다.

 

 

/var/log 디렉토리

로그 파일들이 저장되어 있다.


[root@CentOS /root]# cat /var/log/messages | head -n 5
Jan 27 13:41:01 CentOS rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1735" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jan 27 13:51:42 CentOS dhclient[26047]: DHCPREQUEST on eth0 to 192.168.1.253 port 67 (xid=0x3b880b76)
Jan 27 13:51:42 CentOS dhclient[26047]: DHCPACK from 192.168.1.253 (xid=0x3b880b76)
Jan 27 13:51:42 CentOS dhclient[26047]: bound to 192.168.1.2 -- renewal in 746 seconds.
Jan 27 13:51:42 CentOS NetworkManager[1809]: <info> (eth0): DHCPv4 state changed renew -> renew
~ 중간 생략~

 

/var/run 디렉토리

시스템 정보들이 저장되어 있다. 다음과 같이 'atd' 데몬이 동작 중이면, 'var/run'에 'atd' 데몬의 PID 번호를 저장하고 있다.

 

[root@CentOS /root]# ps -ef | grep atd
rpcuser   1830     1  0 07:45 ?        00:00:00 rpc.statd
root      2322     1  0 07:45 ?        00:00:00 /usr/sbin/atd
root     31311 29600  0 17:35 pts/0    00:00:00 grep atd

[root@CentOS /root]# cat /var/run/atd.pid
2322

 

/var/spool
메일, 뉴스, atd, crond와 같은 시스템에서 대기 상태인 작업들을 위한 디렉토리이다. 각각의 대기 작업들에 대한 디렉토리는 별도로운영된다.

 

[root@CentOS /root]# cd /var/spool

[root@CentOS /var/spool]# ls
abrt  abrt-upload  anacron  at  cron  cups  gdm  lpd  mail  plymouth  postfix
[root@CentOS /var/spool]#

[root@CentOS /var/spool]# ls /var/spool/mail
root  rpc  user1  user2

 


[root@CentOS /var/spool]# cd /
[root@CentOS /]#


 

 

10. /tmp 디렉토리

 

임시 파일들이 저장되는 디렉토리이며, 여기 안에 있는 내용들은 재부팅되면 삭제되고 부팅되면 다시 생성된다.

 

[root@CentOS /]# ls -a /tmp
.          .esd-0                               orbit-root           vmware-root-2864857996
..         VMwareTools-9.6.1-1378637.tar.gz     pulse-TUIvaMVYX0fW   vmware-root-4194939452
.ICE-unix  gnome-system-monitor.root.644844164  pulse-dU9aqxp5tJZG   vmware-tools-distrib
.X0-lock   keyring-Yy6ejk                       virtual-root.WBQVsm
.X11-unix  orbit-gdm                            vmware-root

 

 

 

 

11. /proc 디렉토리

 

프로세스 및 프로그램 정보, 메모리/하드웨어 정보 파일이 있는 디렉토리이다. 이 디렉토리에 있는 파일들은 하드 디스크에 저장되는 것이 아니라, 커널에 의해서 메모리에 저장되어 사용된다.

 

/proc/cpuinfo

CPU 정보

 

/proc/devices

커널에 설정되어 있는 장치 목록

 

/proc/dma

사용중인 DMA 체널(DMA : CPU를 거치지 않고 직접 메모리와 읽기/쓰기를 할 수 있는 체널)

 

/proc/filesystems

커널에 설정되어 있는 파일 시스템

 

/proc/interrupts

사용중인 인터럽트 정보

 

/proc/ioports

사용중인 I/O 포트 정보

 

/proc/loadavg

시스템 평균 부하량

 

/proc/meminfo

시스템 메모리 정보

 

/proc/modules

커널 모듈 정보

 

/proc/stat

시스템 상태 정보

 

/proc/uptime

시스템이 켜저있는 시간

 

/proc/version

커널 버전

 

/proc/net 디렉토리

네트워크 관련 정보를 확인할 수 있는 파일들이 있다.

 

 

 

 

12. /lib 디렉토리

 

공유 라이브러리와 커널 모듈이 있는 디렉토리이다.


[root@CentOS /]# ls /lib
alsa  crda  firmware  kbd  lsb  modules  security  terminfo  udev

[root@CentOS /]# ls /lib/modules/
2.6.32-504.el6.x86_64
[root@CentOS /]#
[root@CentOS /]# ls /lib/modules/2.6.32-504.el6.x86_64/
build              modules.block        modules.inputmap     modules.pcimap       source
extra              modules.ccwmap       modules.isapnpmap    modules.seriomap     updates
kernel             modules.dep          modules.modesetting  modules.softdep      vdso
misc               modules.dep.bin      modules.networking   modules.symbols      weak-updates
modules.alias      modules.drm          modules.ofmap        modules.symbols.bin
modules.alias.bin  modules.ieee1394map  modules.order        modules.usbmap

 

 

 

 

13. /mnt 디렉토리

 

NFS와 같은 파일 시스템이 임시로 마운트하는 디렉토리이며, 프로그램은 이 디렉토리에 파일 시스템이 마운트 되었는지 자동으로 인식하지 않는다. (NFS : 클라이언트가 서버로부터 파일 시스템을 마운트하는 방식)

 

 

 

 

14. /srv 디렉토리

 

시스템이 제공하는 서비스를 위한 파일들이 있는 디렉토리이며, FTP, HTTP 등의 데이터들이 있다.

 

 

 

 

15. /media 디렉토리

 

USB, CD, DVD와 같은 이동식 디스크가 마운트되는 디렉토리이다. 이동식 디스크가 장착되면 Automount 기능을 이용하여 자동으로 검색하여 '/media/미디어 이름'  형식으로 마운트된다.

 

 

 

 

16. /home 디렉토리

 

시스템 계정을 위한 사용자 홈 디렉토리이다. 각각의 사용자별로 디렉토리가 생성되며, 여기에 있는 파일과 디렉토리는 시스템에서 사용하지 않는다.

 

 

 

17. /lost+found 디렉토리

 

부팅시 파일시스템에 문제가 발생할 경우, 'fsck' 명령어를 이용하여 복구할때 사용하는 디렉토리이다. 이 디렉토리는 파티션 마다 각각 한개씩 있으며, 삭제하지 않는 것을 권장한다.

 

 

 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q