-
디렉토리 관리linux/centOS 2018. 6. 18. 14:38
☆ 디렉토리 관리
리눅스의 디렉토리 구조는 전체적으로 트리(Tree) 구조를 하고 있으며, 명령어의 성격과 내용 및 사용 권한 등에 따라 디렉토리로 구분되어 있다. 리눅스 파일 시스템 구조는 기본적인 구조를 제외하고는 사용자의 설정에 따라 달라질 수 있다. 하지만 리눅스의 디렉토리 구조는 파일 시스템 표준안(FSSTND, Linux File System Standard)을 기반으로 하는 것이 바람직하다. 표준안을 무조건 따르라는 강제력은 없지만 리눅스 파일 시스템 표준안을 따라 파일 시스템을 구성할 경우 파일들의 위치가 일관되게 유지되어 프로그램 작성, 포팅은 물론 시스템 관리도 쉬워지는 이점이 있기 때문에 대부분의 배포판들이 이 표준안을 지키고 있다.
대부분의 리눅스는 FHS(Filesystem Hierarchy Standard) 표준 파일 시스템 계층을 사용하고 같은 목적의 파일들을 같은 장소에 일관되게 모아 관리하므로 시스템 자원이나 프로그램들을 쉽게 찾을 수 있다. 다시 말하자면 명령어, 파일 그리고 문서들이 제각기 독립된 장소에서 관리된다. 그럼 각 디렉토리에 대해 자세히 살펴보면서 알아보겠다.
디렉토리명
설 명
/
/(root), 가장 최상위 디렉토리
모든 파일시스템의 마운트 포인터가 존재, 모든 파일시스템의 이름(Name Space)이 존재
/root
시스템 관리자(예: root 사용자)의 홈 디렉토리
/bin
기본 명령어들이 모여 있는 디렉토리
/etc
각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리
시스템 환경설정 파일, 서비스 구성 설정 파일, 사용자/그룹 정보 파일, ....
/boot
리눅스의 커널이 저장되어 있는 디렉토리
/mnt
외부 장치인 플로피 디스크, CD-ROM, Samba 등을 마운트하기 위해서 제공되는 디렉토리
/usr
대부분의 프로그램이 설치되어 있는 디렉토리공유할 수 있는 디렉토리와 파일들
/lib
프로그램들의 각종 라이브러리들이 존재
/home
시스템 계정 사용자들이 홈 디렉토리
/dev
시스템의 각종 디바이스 목록
/proc
/proc 디렉토리에는 시스템의 각종 프로세스
프로그램 정보 그리고 하드웨어적인 정보들이 저장
/var
시스템에서 사용되는 가변적인 파일들이 저장
스풀, 로그, 캐싱
/tmp
임시 파일들을 위한 디렉토리
■ /(root) 디렉토리
일반적으로 루트 디렉토리라고 부르는 리눅스 시스템에서 가장 최상위 디렉토리이며 디렉토리 구조의 시작이다. 시스템 관리자의 홈 디렉토리인 /root 디렉토리와는 별개이며 다른 것이다.‘/’디렉토리를 제외한 디렉토리인 /bin, /etc, /boot, /mnt, /usr, /lib, /home, /dev, /proc, /var, /sbin, /tmp, /root /lost+found, 는 ‘/’디렉토리 안에 존재한다.
# ls /
backup data1 data4 home media net root srv tmp
bin data2 dev lib misc opt sbin sys usr
boot data3 etc lost+found mnt proc selinux test var
■ /root 디렉토리
시스템 관리자(EX: root)의 홈 디렉토리이다. root 사용자의 환경파일(.bash_profile, .bashrc)이나 또는 운영체제 설치시의 기록(install.log, anaconda-ks.cfg)들이 들어 있다.
# ls -a /root
./ .bashrc .gnome2/ .recently-used.xbel Desktop/
../ .cshrc .gnome2_private/ .redhat/ anaconda-ks.cfg
.ICEauthority .dmrc .gstreamer-0.10/ .scim/ install.log
.Trash/ .eggcups/ .gtkrc-1.2-gnome2 .ssh/ install.log.syslog
.bash_history .gconf/ .lesshst .tcshrc
.bash_logout .gconfd/ .metacity/ .viminfo
.bash_profile .gnome/ .nautilus/ .xsession-errors
■ /bin 디렉토리
binaries의 약어로 이진 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리이다. 해당 디렉토리 안을 들여다보면 대부분의 파일들이 녹색으로 구성된 파일 이 실행 파일임을 알 수 있다.
특히 이곳에는 부팅에 필요한 명령어들이 위치하며 부팅 후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치하고 있다.
# ls /bin
alsacard* dmesg* kill* pgawk* tar*
alsaunmute* dnsdomainname@ ksh@ ping* taskset*
arch* doexec* ksh93* ping6* tcptraceroute@
awk@ domainname@ link* ps* tcsh*
basename* dumpkeys* ln* pwd* touch*
bash* echo* loadkeys* raw* tracepath*
cat* ed* loadkeys.static* red@ tracepath6*
chgrp* egrep@ logger* redhat_lsb_init* traceroute*
chmod* env* login* rm* traceroute6@
chown* ex@ ls* rmdir* tracert@
cp* false* mail* rpm* true*
..... (중략) .....
■ /bin - 사용자가 사용하는 명령어 (EX: ls, cp, mv, rm, ...)
■ /sbin - 관리자가 사용하는 명령어 (EX: fsck, fdisk, ....)
# find / -name bin -type d
# find / -name sbin -type d
■ /etc 디렉토리
/etc 디렉토리는 리눅스에서 없어서는 안 될 디렉토리이며, 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리이다. 이 디렉토리에 있는 대부분의 파일들은 시스템 관리자에 의해서 관리되는 파일들이다.
웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스워드 관리, 시스템의 파일 시스템 관리 파일, 여러 가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스템 전반에 걸친 거의 모든 환경 설정 파일들이 모두 이 디렉토리 안에 저장되어 있다.
다음은 /etc 파일 안에 존재하는 중요 디렉토리에 대한 설명이다.
① /etc/rc.d 디렉토리
시스템의 부팅과 시스템 실행 레벨 변경 시에 실행되는 스크립트들이 저장되어 있는 디렉토리이다. 리눅스의 6가지 실행 레벨별로 각각의 해당 디렉토리가 있는 것을 볼 수 있을 것이다.
# ls /etc/rc.d
init.d/ rc* rc.local* rc.sysinit* rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/
② /etc/shadow 파일
/etc/passwd 파일에서 패스워드 부분만을 따로 저장하는 파일이다. 이 파일에 패스워드는 암호화 되어 shadow 패스워드 형태로 저장되어 있으며 시스템 관리자만이 접근할 수 있기 때문에 크래킹 등에 대한 우려가 상대적으로 적다.
③ /etc/group 파일
시스템의 그룹에 대한 정보를 저장하고 있는 파일이다.
④ /etc/inittab 파일
init 데몬이 읽어 들이는 설정하는 파일이다.
⑤ /etc/issue, /etc/issue.net 파일
getty에 의해서 로그인을 위한 프롬프트가 뜨기 전에 출력되는 메시지를 설정하는 파일이다. 리눅스 시스템으로 접속할 경우 가장 처음으로 볼 수 있는 메시지이다. 보통 시스템에 대한 설명과 각종 환영 메시지를 전달하기 위해서 사용된다. /etc/issue 파일의 내용은 보통 시스템의 터미널에서 볼 수 있다. 그리고 /etc/issue.net 파일의 내용은 리모트 상에서 시스템으로 접속할 경우 볼 수 있을 것이다.
# cat /etc/issue.net
CentOS release 5.4 (Final)
Kernel \r on an \m
# telnet localhost
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
CentOS release 5.4 (Final)
Kernel 2.6.18-164.el5 on an i686
login:
⑥ /etc/profile, /etc/csh.login, /etc/csh.cshrc 파일
시스템이 시작될 때 사용자가 로그인을 할 때 본(Bourne) 셸이나 C셸에 의해서 실행되는 스크립트 파일이다. 일반적으로 사용자들에 대한 기본 환경 설정에 사용된다.
⑦ /etc/securetty 파일
/etc/securetty 파일에는 시스템 관리자(예: root)가 시스템에 로그인할 수 있는 안전한 터미널에 대한 정보가 저장되어 있다. 일반적으로 가상 콘솔이 설정되어 있다. 이것은 네트워크를 통해 시스템으로 침입해 시스템 관리자의 권한을 획득하는 크래킹을 막기 위해서이다.
⑧ /etc/shells 파일
/etc/shells 파일은 시스템에서 안정적으로 사용할 수 있는 셸에 대한 정보를 저장하고 있는 파일이다. 만약 chsh 명령을 사용해서 사용 중인 셸을 바꾸려면 이 파일에 저장되어 있는 셸 중에 하나를 선택해야 한다. 또한 ftp 데몬의 경우에는 사용자의 셸을 검사하여 /etc/shells에 저장되어 있지 않은 셸을 사용한다면 로그인을 허용하지 않는다.
# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
■ /boot 디렉토리
리눅스의 커널이 저장되어 있는 디렉토리로서 각종 리눅스 Boot에 필요한 Booting 지원 파일들이 저장되어 있는 디렉토리이다. 디렉토리 안을 살펴보면 vmlinuz라는 커널도 볼 수 있다.
# ls /boot
System.map-2.6.18-348.el5 initrd-2.6.18-348.el5.img vmlinuz-2.6.18-348.el5
config-2.6.18-348.el5 message
grub/ symvers-2.6.18-348.el5.gz
# cat /boot/grub/grub.conf (# cat /etc/grub.conf)
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-348.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-348.el5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-348.el5.img
■ /mnt 디렉토리
외부 장치인 플로피 디스크, CD-ROM, Samba 등을 마운트하기 위해서 제공되는 디렉토리이다. 이 디렉토리는 임시로 사용되는 디렉토리이므로 프로그램은 /mnt 디렉토리에 어떠한 파일 시스템이 마운트 되었는지 자동으로 인식하지 않는다. 또한 /mnt는 보통 여러 개의 하위 디렉토리로 나누어 사용하며, 평소에는 /mnt 디렉토리의 각 디렉토리들은 비어 있는 상태이다.
■ /usr 디렉토리
이 디렉토리 역시 가장 중요한 디렉토리 중 하나로 사용하면서 공유할 수 있는 디렉토리와 파일들을 가지고 있다. 즉, 시스템에 사용되는 각종 응용 프로그램들이 설치되는 디렉토리이다. 거의 모든 프로그램과 그에 관련된 명령어 및 라이브러리들이 이 디렉토리에 위치하게 된다. 또한 X 시스템 관련 파일들과 리눅스 커널 소스, 각종 C언어 관련 헤더파일 등도 이 디렉토리 안에 저장되어 있고, 이 디렉토리 아래에 존재하는 하위 디렉토리에 대해 간략하게 설명하겠다.
① /usr/bin 디렉토리
리눅스 시스템에서 사용되는 각종 프로그램들이 저장되어 있으며 /bin 디렉토리에는 없는 다양한 실행 파일들이 저장되어 있는 디렉토리이다.
② /usr/X11R6 디렉토리
X 윈도우 시스템에 사용되는 모든 파일들이 이 디렉토리 안에 저장된다. 이 디렉토리는 X 윈도우 시스템의 개발과 설치를 좀 더 쉽게 하기 위해서 전체 시스템 디렉토리 구조에 통합되지 않고 독자적인 구조를 가진다.
③ /usr/etc 디렉토리
/etc 디렉토리에는 각종 환경 설정 파일들이 있듯이 이곳에도 여러 가지 시스템 환경 설정파일들이 저장되어 있다. 하지만 이곳에 있는 파일들은 /etc 디렉토리 안의 파일들과는 달리 꼭 필요한 파일들은 아니다.
④ /usr/sbin 디렉토리
시스템 관리자를 위한 명령어들이 저장되어 있는 디렉토리이다. 보통 이 디렉토리의 명령어들은 루트 파일 시스템에는 있을 필요가 없는 서버 프로그램들이 저장된다.
⑤ /usr/include 디렉토리
C 언어 관련 헤더파일들이 저장되어 있는 디렉토리이다.
⑥ /usr/lib 디렉토리
각종 라이브러리들이 저장되어 있는 디렉토리이다. 만약 사용자가 직접 작성한 프로그램을 컴파일 한다면 해당 프로그램은 /usr/lib 디렉토리의 파일에 Link된다. 또한 이 라이브러리 안에 실행 코드가 필요하다면 /lib 디렉토리를 참조한다.
⑦ /usr/local 디렉토리
시스템의 특징적인 프로그램들이 저장되는 디렉토리이다. 여기서 특징적인 프로그램은 시스템 관리자에 의해서 따로 설치되는 프로그램들을 말한다. 그러므로 시스템마다 각각의 특징을 가지므로 시스템마다 이 디렉토리에 저장되어 있는 내용들은 모두 다를 것이다. 하지만 이 디렉토리는 시스템에 꼭 필요한 디렉토리는 아니다.
⑧ /usr/share/man 디렉토리
man 페이지의 실제 내용들이 저장되어 있는 디렉토리이다. 디렉토리를 살펴보면 man1, man2, man3 등과 같이 여러 개의 디렉토리들로 나누어져 있는 모습을 볼 수 있을 것이다. 이는 예를 들어 man1 디렉토리는 섹션 1의 man 페이지 소스를 위한 디렉토리를 의미한다.
⑨ /usr/src 디렉토리
시스템에서 사용하는 각종 프로그램들의 컴파일 되지 않는 소스 파일들이 저장되어 있는 디렉토리이다. /usr/src 디렉토리에서 한 번 살펴본 곳은 /usr/src/linux 디렉토리이다. 이 디렉토리가 바로 리눅스의 커널 소스를 저장하고 있는 디렉토리이기 때문이다.
⑩ /usr/share/info 디렉토리
GNU Info 문서들을 저장하고 있는 디렉토리이다.
⑪ /usr/share/doc 디렉토리
각종 문서들이 저장되어 있는 디렉토리이다.
■ /lib 디렉토리
/lib 디렉토리에는 프로그램들의 각종 라이브러리들이 존재한다. 대부분 공유 라이브러리로 더 편리하게 사용할 수 있으며, 파일 크기를 줄여서 실행할 때 불러 사용하게 된다.
(하나만 참조하고 있으면 정적 라이브러리, 여러개가 참조하고 있으면 동적 라이브러리)
# ls /lib
bdevid/ libgobject-2.0.so.0@
cpp@ libgobject-2.0.so.0.1200.3*
dbus-1/ libgthread-2.0.so.0@
device-mapper/ libgthread-2.0.so.0.1200.3*
firmware/ libiw.so.28*
i686/ libkeyutils-1.2.so*
iptables/ libkeyutils.so.1@
kbd/ liblvm2cmd.a
ld-2.5.so* liblvm2cmd.so@
ld-linux.so.2@ liblvm2cmd.so.2.02*
ld-lsb.so.3@ libm-2.5.so*
libBrokenLocale-2.5.so* libm.so.6@
libBrokenLocale.so.1@ libnsl-2.5.so*
..... (중략) .....
① /lib/modules 디렉토리
/lib/modules 디렉토리에는 커널로 로딩 가능한 커널 모듈들이 저장되어 있다.
# cd /lib/modules
# cd 2.6.18-164.el5
# ls
build@ misc/ modules.dep modules.isapnpmap modules.seriomap source@
extra/ modules.alias modules.ieee1394map modules.ofmap modules.symbols updates/
kernel/ modules.ccwmap modules.inputmap modules.pcimap modules.usbmap
weak-updates/
■ /home 디렉토리
/home 디렉토리에는 시스템 계정 사용자들이 홈 디렉토리가 저장된다. 이곳의 디렉토리와 파일들은 시스템에서 사용되지 않는다. 단지 리모트 상에서 시스템으로 접속을 하는 사용자들을 위한 공간이다.
.
fedora/ lost+found/ user01/ user02/
■ /dev 디렉토리
/dev 디렉토리에는 시스템의 각종 디바이스들의 목록이 들어 있는 디렉토리이다. 디렉토리를 살펴보면 많은 파일들이 위치하고 있는 것을 볼 수 있다. 하지만 이 디렉토리는 물리적인 용량은 갖지 않는 가상 디렉토리이다. 대표적으로 하드 드라이브, 플로피, CD-ROM 그리고 루프백 장치 등이 존재한다. 리눅스 시스템은 윈도와 달리 각종 디바이스 장치들을 하나의 파일로 취급한다. 따라서 시스템은 각각의 장치로부터의 정보를 /dev 디렉토리에 존재하는 해당 장치 파일로부터 가져온다.
Device Files
- Block Device File(EX: ls -l /dev | grep '^b')
- Character Device (EX: ls -l /dev | grep '^c')
[EX] Disk Device File
# ls -l /dev/sd?
# ls -l /dev/hd?
① /dev/console 디바이스 파일
시스템 콘솔이다.
② /dev/hda 디바이스 파일
시스템 하드 디스크(IDE 방식의 디스크)이다. 여기서 /dev/hda는 첫 번째 하드 디스크를 의미한다. /dev디렉토리를 살펴보면 /dev/hda1, /dev/hda2 등의 파일들을 볼 수 있을 것이다. 이는 첫 번째 하드 디스크의 첫 번째 파티션, 두 번째 파티션 등을 의미한다. 만약 시스템에 여러 개의 하드 디스크가 장착되어 있다면 /dev/hdb, /dev/hdc 등의 파일들도 /dev/hda1. /dev/hda2 등과 같은 형식으로 저장되어 있는 모습을 볼 수 있다.
③ /dev/sda 디바이스 파일
시스템 하드 디스크(SCSI 방식의 디스크)들이다. 만약 시스템에 SCSI 하드 디스크를 장착했다면 시스템은 /dev/hda 등과 같은 파일들 대신 /dev/sda 파일에서 정보를 얻어 장치에 접근할 것이다.
④ /dev/lp 디바이스 파일
시스템의 병렬 포트 장치들이다.
⑤ /dev/ttyS 디바이스 파일
/dev/ttyS는 직렬 포트 장치이다.
⑥ /dev/null, /dev/zero 다바이스 파일
/dev/null, /dev/zero은 블랙홀이라고도 부르는 특별한 장치이다. 이 장치로 데이터 등을 보내면 모두 폐기되므로 주의해야 할 것이다.
⑦ /dev/pts 디렉토리
시스템으로의 원격 접속을 위한 ‘pesudo_terminal'들이다. 만약 시스템 계정 사용자들이 원격지에서 시스템으로 Telnet 등을 이용하여 시스템에 접속을 시도한다면 이들은 /dev/pts 디바이스들을 사용하게 되는 것이다.
⑧ /dev/tty 디바이스 파일
시스템의 가상 콘솔(Virtual Console)들이다. 이 가상 콘솔의 기능은 하나의 화면에 여러 개의 콘솔들을 만든다. 만약 사용자가 시스템 앞에 앉을 수 있다면 Alt +F1, Alt + F2 등을 이용하여 리눅스에서 제공하는 여러 개의 가상 콘솔을 직접 볼 수 있을 것이다.
■ /proc 디렉토리
/proc 디렉토리에는 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장된다. 이 디렉토리는 가상 파일 시스템으로 /dev 디렉토리와 마찬가지로 하드디스크 상에 물리적인 용량을 갖지 않는다. 즉, 실제로 존재하지 않는다는 것이다. 또한 이 디렉토리에 존재하는 파일들은 실제 하드 디스크에 저장되지 않고 커널에 의해서 메모리에 저장된다. 그러므로 그 디렉토리 안의 파일들은 현재의 시스템 설정을 보여주는 것이다. 다음은 /proc 디렉토리에 대해 하부 디렉토리에 대한 설명이다.
① /proc/partitions 파일
이 파일은 하드디스크 분할영역 상태에 대한 정보를 표시한다.
# cat /proc/partitions /* 관련된 명령어 : fdisk -l, df -h, free */
major minor #blocks name
8 0 31457280 sda
8 1 27832581 sda1
8 2 1052257 sda2
8 3 514080 sda3
8 4 1 sda4
8 5 514048 sda5
8 6 514048 sda6
8 7 514048 sda7
8 8 514048 sda8
② /proc/filesystems 파일
시스템에 설정되어 있는 파일 시스템에 대한 정보를 저장하고 있는 파일이다.
# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cpuset
nodev binfmt_misc
nodev debugfs
nodev securityfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev futexfs
nodev tmpfs
nodev inotifyfs
nodev eventpollfs
nodev devpts
ext2
nodev ramfs
nodev hugetlbfs
iso9660
nodev mqueue
ext3
nodev vmhgfs
nodev vmblock
nodev rpc_pipefs
nodev autofs
③ /proc/swaps 파일
스왑 정보를 알 수 있다. 리눅스를 설치하면서 설정한 스왑 파티션 외에 리눅스 시스템이 사용하고 있는 스왑 파일에 대한 정보도 알 수 있습니다.
# cat /proc/swaps /* 관련 명령어 : free */
Filename Type Size Used Priority
/dev/sda2 partition 1052248 88 -1
④ /proc/version 파일 /* # uname -a */
이 파일은 리눅스 커널의 버전을 알려 준다. 레드햇 리눅스는 최신의 커널인 커널 2.6을 사용하고 있는 것을 확인할 수 있다.
# cat /proc/version /* # dmesg | grep -i version */
Linux version 2.6.18-164.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Thu Sep 3 03:33:56 EDT 2009
⑤ /proc/devices 파일
현재 리눅스 커널에 설정되어 있는 하드웨어의 목록을 볼 수 있다. /dev에 있는 파일들의 정보를 확인 하는 것과 같다. 리눅스는 두 가지 종류의 하드웨어 디바이스를 인식한다. 하나는 디스크와 같은 블록 디바이스와 프린터, 모뎀과 같은 캐릭터 디바이스이다.
# cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
....
Block devices:
1 ramdisk
2 fd
8 sd
9 md
....
# ls -l /dev | grep '^c'
# ls -l /dev | grep '^b'
⑥ /proc/ioports 파일
현재 어느 I/O 포트가 사용 중인지를 확인 할 때 사용한다. IRQ의 경우처럼 I/O 포트 역시 하드웨어끼리 충돌이 있어서는 안 된다.
# cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
....
[참고] IRQ (interrupt request)의 개념
IRQ[아이알큐] 값은 자신의 운영에 관하여 신호를 보내오는 주변장치들을 식별하기 위해 각 주변장치 별로 미리 할당해 놓은 장소이다. 예를 들어 프린터는 출력이 끝나면 인터럽트 신호를 컴퓨터에 보내는데, 그 신호는 다음에 어떤 일을 할 것인지를 결정하도록, 아주 짧은 시간동안 컴퓨터가 하던 일을 멈추게 한다. 여러 개의 신호들이 같은 인터럽트 회선을 통해 들어오기 때문에, 컴퓨터가 이를 구분하기 위해서는 각 주변장치들과 컴퓨터로 통하는 회로마다 고유한 값을 지정할 필요가 있다. PnP 장치가 나오기 이전에는 컴퓨터에 새로운 주변장치를 추가할 때마다 IRQ 값을 사용자가 일일이 지정해야만 했었다.
만약 PnP를 지원하지 않는 주변장치를 추가로 설치해야 한다면, 아마도 제작자는 그것의 IRQ 값을 어떻게 설정하는지에 대해 뚜렷한 지침을 설치설명서 등에 제공해 줄 것이다. 그러나, 이러한 자료도 없고 설정해야할 IRQ 값에 대해 잘 알지 못하고 있다면, 그 제품을 만든 회사의 기술지원센터에 전화로 문의하는 것이 시간을 절약하는 길이기도 하다.
⑦ /proc/cpuinfo 파일
리눅스 서버의 CPU 정보가 들어 있다. CPU 의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려 준다.
# cat /proc/cpuinfo /* # dmesg | grep -i cpu */
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 5
model name : AMD Athlon(tm) II X4 620 Processor
stepping : 2
cpu MHz : 2600.210
cache size : 512 KB
....
⑧ /proc/meminfo 파일
메모리 사용량에 관한 정보를 보여 준다. 실제 메모리뿐만 아니라 가상 메모리까지 모두 확인할 수 있다.
# cat /proc/meminfo /* # dmesg | grep -i mem ,# free */
MemTotal: 515340 kB
MemFree: 27556 kB
Buffers: 27348 kB
Cached: 343184 kB
SwapCached: 0 kB
....
⑨ /proc/modules 파일
커널 모듈에 대한 정보를 확인 할 수 있다. 디바이스 된 장치의 드라이브를 확인할 때 이더넷 카드를 인식시킬 때 내렸던 lsmod 명령처럼 현재 커널 메모리에 올려서 사용하고 있는 모듈에 대한 정보를 확인 할 수 있다.
# cat /proc/modules /* # lsmod */
autofs4 29253 3 - Live 0xe0cf2000
hidp 23105 2 - Live 0xe0c95000
rfcomm 42457 0 - Live 0xe0c5f000
l2cap 29505 10 hidp,rfcomm, Live 0xe0c8c000
bluetooth 53925 5 hidp,rfcomm,l2cap, Live 0xe0cd9000
....
⑩ /proc/dma 파일
현재 어느 DMA 채널이 사용 중인지를 알려 준다. 주로 사운드 카드를 설정할 때 확인하는 부분이다. DMA는 CPU를 통하지 않고 하드웨어와 메모리 사이에 데이터를 직접 전송시켜 고속으로 데이터를 전송하는 방식이다. 플로피 디스크와 같은 방식의 데이터 전송방식을 말한다.
# cat /proc/dma
2: floppy
4: cascade
....
[참고] DMA의 개념
DMA (Direct Memory Access) ; 메모리 직접 참조
DMA[디에메이]는 부착된 주변장치 (하드디스크 드라이브 등)로부터 컴퓨터 마더보드 상의 메모리로 데이터를 직접 보낼 수 있는 몇몇 컴퓨터의 버스의 기능이다. 이때, 마이크로프로세서는 데이터 전송에 관여하지 않으므로, 전체적인 컴퓨터 성능이 높아진다.
대개, 메모리의 일정 부분이 DMA에 사용될 영역으로 지정된다. ISA 버스 표준에서는, 최고 16 MB까지의 메모리가 DMA를 위해 주소 지정될 수 있다. EISA와 MCA 표준은 전체범위의 메모리 주소에 액세스를 허용한다 (그것들이 32 비트 주소지정이 가능하다는 전제하에). PCI는 마이크로프로세서가 PCI 콘트롤러에 입출력제어를 위임하는 버스 마스터링을 사용하여 DMA를 성취한다.
DMA의 대안으로서, PIO 인터페이스가 있는데, 이는 장치들 간에 전송된 모든 데이터가 프로세서를 거쳐가는 것이다. ATA/IDE 인터페이스를 위한 새로운 프로토콜이 Ultra DMA/33인데, 집중모드에서는 초당 33 MB까지의 데이터를 전송할 수 있다. Ultra DMA/33과 함께 딸려오는 하드드라이브는 PIO 모드 1, 3, 그리고 4와 멀티워드 DMA 모드 2 (초당 16 MB)를 함께 지원한다.
쉬운 설명] DMA 컨트롤러는 입출력장치와 관련된 개념이다. 일반적으로 이러한 입출력 창치는 직접 시스템 버스에 접속되지 않는데, 그 이유는 입출력 장치가 다양하고, 각기 전송속도의 차이가 나며, 데이터의 형식과 길이가 다르기 때문이다. 그래서 입출력 장치를 제어하기 위해서는 입출력 제어기가 필요하고, 입출력 제어기는 입출력 장치의 제어와 타이밍을 조절하는 역할을 하며, CPU와 입출력 장치의 통신을 담당하게 된다. 또한 데이터의 버퍼링이나 오류를 검출하는 역할을 수행하는데, 물론 CPU는 해당 입출력 제어기를 통하여 입출력 동작을 수행한다. 그런면에서 DMA는 넓은 의미로 입출력 제어기의 범위로 이해하기도 한다.
⑪ /proc/ide 디렉토리
이 디렉토리에는 IDE 인터페이스와 연결된 IDE 기기들에 대한 정보가 파일 형태로 들어 있다. 대표적인 IDE 기기로 하드디스크를 들 수 있다. ide 디렉토리에 있는 hdc 디렉토리에는 하드디스크에 대한 정보가 저장되어 있다. /proc/ide/ide1/hdc 디렉토리에서 cat model이라는 명령을 내리면 하드디스크의 모델 이름을 표시해 준다.
# ls -l /proc/ide/ide1
-r--r--r-- 1 root root 0 5월 24 17:55 drivers
lrwxrwxrwx 1 root root 8 5월 24 17:55 hdc -> ide1/hdc
dr-xr-xr-x 3 root root 0 5월 24 17:55 ide1
# cat /proc/ide/ide1/hdc/model
VMware Virtual IDE CDROM Drive
⑫ /proc/uptime 파일
시스템이 얼마나 오래 동작했는지에 대한 정보를 저장하고 있는 파일이다.
# cat /proc/uptime /* # uptime */
128847.80 124604.75
# uptime
18:37:16 up 1 day, 11:45, 5 users, load average: 0.00, 0.00, 0.00
■ /var 디렉토리
/var 디렉토리는 시스템에서 사용되는 가변적인 파일들이 저장된다. 각종 시스템 로그파일, 사용자 로그인에 대한 보안 기록, 그리고 만약 시스템에 메일 서버를 운영한다면 사용자들에게 전송된 메일들을 임시로 저장한다. 레드햇 7.0에서부터 /var 디렉토리의 용도에 대한 변경 내용이 있다. 과거에는 /home 디렉토리에 저장되던 /home/ httpd 디렉토리가 /var/www 로 이름이 변경되어 저장된다. 또한 /home/ftp 디렉토리가 /var/ftp로 변경되었다. /var 디렉토리를 좀 더 자세하게 살펴보면 다음과 같다.
① /var/log 디렉토리
프로그램들의 로그 파일들이 저장되는 디렉토리이다. 이 디렉토리에서 중요한 파일은 wtmp와 messages 파일이다. 이들은 각각 login과 syslog의 로그 파일들이다. wtmp는 시스템의 모든 사용자 로그인과 로그아웃에 대한 정보를 저장하고 있는 파일이고, messages는 커널과 시스템의 모든 출력 메시지를 저장하고 있는 파일이다. /var/log 안의 파일들은 시스템의 사용량에 따라 그 크기가 무한대로 증가할 수 있으므로 정기적으로 파일들을 삭제하는 등 디렉토리 관리가 필요하다.
# tail /var/log/messages (# gnome-system-log)
Jan 7 13:02:36 linux249 avahi-daemon[4022]: Received response from host 172.16.6.26 with invalid source port 52450 on interface 'eth0.0'
Jan 7 13:02:36 linux249 avahi-daemon[4022]: Received response from host 172.16.6.26 with invalid source port 52450 on interface 'eth0.0'
Jan 7 13:02:36 linux249 avahi-daemon[4022]: Invalid legacy unicast query packet.
Jan 7 13:02:37 linux249 avahi-daemon[4022]: Invalid legacy unicast query packet.
Jan 7 13:02:37 linux249 avahi-daemon[4022]: Received response from host 172.16.8.103 with invalid source port 59480 on interface 'eth0.0'
Jan 7 13:02:37 linux249 avahi-daemon[4022]: Invalid legacy unicast query packet.
Jan 7 13:02:37 linux249 avahi-daemon[4022]: Received response from host 172.16.6.26 with invalid source port 52450 on interface 'eth0.0'
Jan 7 13:02:40 linux249 last message repeated 6 times
Jan 7 13:02:53 linux249 avahi-daemon[4022]: Received response from host 172.16.8.105 with invalid source port 64324 on interface 'eth0.0'
Jan 7 13:05:35 linux249 avahi-daemon[4022]: Invalid query packet.
② /var/run 디렉토리
시스템의 현재 정보들을 저장하고 있는 디렉토리이다. 간단하게 /var/run/atd.pid 파일의 경우에는 현재 사용 중인 atd 데몬의 프로세스번호를 저장하고 있다.
# ps -ef | grep atd
root 2480 1 0 May23 ? 00:00:00 rpc.statd
root 2881 1 0 May23 ? 00:00:00 /usr/sbin/atd
# cat /var/run/atd.pid
2881
③ /var/spool 디렉토리
메일이나 뉴스, 프린터 큐 등과 같은 시스템 상에서 대기 상태에 있는 작업들을 위한 디렉토리이다. 각각의 대기 작업들은 모두 /var/spool 아래 고유의 디렉토리에 위치하게 된다. 예를 들어 시스템의 계정 사용자들의 메일은 /var/spool/mail에 저장된다.
# ls /var/spool/mail
FEDORA fedora root user01
■ /tmp 디렉토리
디렉토리 이름에서도 알 수 있듯이 임시 파일들을 위한 디렉토리이다. 이 디렉토리는 프로그램들이 사용하는 임시파일들이 생성되는 디렉토리이다. /tmp 디렉토리안의 내용은 재부팅 되면 삭제되고 부팅이 되면서 다시 생성이 된다.
# ls -al /tmp
VMwareDnD/ scim-bridge-0.3.0.lockfile-0@localhost:0.0 ssh-gWLtvP4408/
gconfd-root/ scim-bridge-0.3.0.socket-0@localhost:0.0= virtual-root.wQlgkr/
keyring-YT6EqU/ scim-helper-manager-socket-root= vmware-config0/
mapping-root= scim-panel-socket:0-root= vmware-root/
orbit-root/ scim-socket-frontend-root= vmware-root-1983851911
'linux > centOS' 카테고리의 다른 글
파일 시스템 작업 (1) 2018.06.20 장치 인식과 파티션 작업 (0) 2018.06.19 원격 접속과 파일 전송 (0) 2018.06.18 프로세스 관리 (0) 2018.06.17 shell 특성 3 (0) 2018.06.17