Skip to content
TUWLAB.com
Linux

Linux 루트 디렉토리 구성

Posted 2014. 03. 19 Updated 2018. 01. 04 Views 12658 Replies 0

제대로 서버를 운영해 보겠다고 처음 리눅스를 설치하고 난 직후, 명령어 연습을 하고 있을 때 유독 눈에 거슬리던것들이 있었다. 바로 루트 디렉토리(/)에 있던 bin, dev, var, ... 이런 디렉토리들이습니다.

home이나 boot의 경우 무엇인지 바로 알 수 있었지만, 그 나머지들은 딱 봐서는 뭐가 뭔지 잘 알 수가 없었습니다.

어느 정도 리눅스에 익숙해진 지금, 리눅스 루트 디렉토리에 포함되어 있는 이상한(?) 디렉토리들의 명칭과 기능을 정리해 도록 하겠습니다.

 

/ (root)

최상위 디렉토리입니다.

드라이브 문자부터 시작하는 윈도에서의 경로와 달리, 리눅스에서는 최상위 디렉토리가 '/'이므로 절대경로는 무조건 이 슬래시로 시작하게 됩니다.

윈도 파일시스템과 다른 또 한가지 중요한 특징은, 하드디스크나 USB와 같은 메모리는 물론 키보드, 모니터, 프린터와 같은 '장치' 들도 파일시스템상에 디렉토리나 파일의 형태로 존재한다는 점입니다.

예를 들어, 윈도에 익숙한 사용자가 리눅스로 자신있게 부팅해서 USB를 꽃으면 또 다른 루트(/)가 뙇! 하고 생기겠거니 하고 기대할지도 모르지만, 현실은 /dev/sdx 처럼 루트로부터 시작하는 하위 디렉토리에 붙어서 보여집니다.

외부 장치를 디렉토리 형태로 '붙이는'것을 전문용어(?)로 '마운트(Mount)'라고 합니다.

 

/bin

'binary'의 약자로, 실행 가능한 파일들이 저장되어 있습니다.

흔히들 많이 사용하는 ls, cp, mv, rm 등과 같은 명령어들의 실행파일이 바로 이곳이 존재합니다. 예를 들어, Shell에서 mkdir blah~blah 라고 치면 바로 이 bin 디렉토리에서 mkdir 바이너리를 찾아서 실행을 하합니다.

이 디렉토리의 경로는 PATH 변수에 저장이 되어 있는데, Shell에 명령어를 입력하면 PATH에 등록된 경로를 뒤져서 명령어의 실행파일이 저장된 위치를 찾아 가는 원리로 동작합니다.

궁긍하면 Shell에 다음 명령어를 쳐 보도록 합니다.

echo $PATH

출력 결과를 잘 찾아보면 '... :/bin: ...' 이라고 써진 부분이 있을 것입니다. 명령어를 찾을 경로 목록중 하나에 바로 이 bin  디렉토리가 등록되어 있는 것입니다.

 

/boot

부팅에 필요한 이미지, 커널, 부트로더(GRUB)와 같은 중요한 파일들이 들어 있습니다. 커널 컴파일과 같은 작업을 할 때 외에는 직접 찾아 들어갈 일이 거의 없습니다.

이 디렉토리를 잘못 건드리면 부팅이 되지 않으므로 주의해야 하며, 시스템이 부팅조차 되지 않는 사태를 방지하기 위해 다른 디렉토리는 같은 파티션에 놓더라도, 이 디렉토리만은 별도 파티션으로 구성하는 것이 일반적입니다.

 

/dev

하드디스크, ODD, USB 등 물리적 장치들이 파일 형태로 매핑되어 있는 디렉토리입니다. '리눅스는 모든 것이 파일이다.'라고 할 수 있을 정도로, 리눅스 시스템은 모든 시스템 자원들을 파일로 취급하여 관리합니다.

예를 들어 cdrom은 ODD, hdx나 sdx는 하드디스크, ttyn은 키보드 이런 식입니다.

 

/etc

시스템 및 설치한 프로그램의 환경설정 또는 스크립트 파일이 저장되어 있습니다.

 

/home

등록된 사용자의 홈 디렉토리입니다.

윈도에서 C:\Documents and Settings 폴더와 같은 기능을 한다고 생각하면 됩니다. 사용자별로 하위 디렉토리가 생성되며, 바탕화면에 늘어놓은 아이콘이나 다운로드 받은 파일이 저장됩니다.

단, 최고 관리자인 root의 홈 디렉토리는 이곳에 저장되지 않고 별도 위치인 /root가 됩니다.

 

/lib, /lib64

프로그램을 실행할 때 동적으로 로드되는 라이브러리 파일들이 저장되어 있습니다.

 

/lost+found

손상된 파일 조각이나, 결함이 있는 파일이 저장됩니다. 보통 이런 파일들은 갑작스러운 시스템 종료나 오류로 인해 발생하며, fsck와 같은 오류체크 프로그램을 통해 발견되어 이 디렉토리에 자동으로 옮겨집니다.

이 디렉토리는 루트에만 존재하는 것이 아니라, 마운트되는 모든 장치의 최상위 위치에 모두 존재합니다. 즉, USB 메모리를 꽃은 경우에도 메모리의 최상위 위치에 자동으로 이 디렉토리가 생성됩니다.

 

/mnt, /media

파일시스템이 마운트되는 기본 위치입니다.

본래 mnt만 존재하였으나, USB 메모리와 같은 휴대용 장치들이 많이 사용되면서 media라는 디렉토리도 새로 추가되었습니다. USB 메모리를 꽃으면 기본적으로 /media 디렉토리에 마운트됩니다.

 

/opt

패키지 형태가 아닌, 빌드된 상태로 배포되는 응용프로그램의 설치 목적으로 사용되는 디렉토리입니다.

예를 들어, Sublime Text와 같이 디렉토리 통째로 복사하는 방식으로 설치하는 프로그램들을 이 디렉토리에 설치합니다. Windows에서 Program Files 디렉토리와 그 용도가 같습니다.

 

/proc

현재 동작중인 프로세스들의 정보가 저장되어 있습니다.

이 디렉토리는 Kernel 부팅 과정에서 생성된 뒤 Mount되며, 여기에 있는 항목들은 실제로 디스크에 존재하는 파일들은 아닙니다. 실제로, Linux가 설치된 디스크를 다른 컴퓨터에 연결해서 이 디렉토리를 살펴보면 아무것도 들어있지 않음을 알 수 있습니다.

 

/root

최고 관리자인 root의 홈 디렉토리입니다.

 

/sbin

System Binary를 의미하며, root만 사용할 수 있는 명령어들(시스템종료, 업데이트, 프로그램 설치 등)이 저장되어 있습니다.

 

/tmp

프로세스들이 동작하면서 생성하는 임시 파일이 위치하는 디렉토리입니다.

기본적으로 시스템의 모든 사용자가 접근할 수 있으므로 여기에 임시파일을 생성할 때는 보안에 유의해야 합니다.

 

/usr

시스템 응용프로그램이 위치하는 디렉토리입니다. GCC, Apache, MySQL, PHP등의 응용프로그램이 이곳에 설치됩니다.

/usr/local

패키지 매니저(yum, apt-get, pacman 등)가 아닌, 소스코드를 다운받아 직접 빌드하여 설치하는 프로그램들이 위치하는 디렉토리입니다. (./configure - make - make install)

이렇게 프로그램 설치 디렉토리를 구분해 놓은 이유는 패키지 매니저가 관리하는 프로그램과 직접 빌드해서 설치한 프로그램들이 서로 충돌하는 것을 방지하기 위함입니다. (yum으로 uninstall을 했는데, make install로 설치한 프로그램이 삭제되면 재미있는(?) 일들이 일어날 것입니다.)

또한 충돌 방지 목적 외에, 직접 빌드해서 설치하는 프로그램들은 차후에 불필요해져서 삭제하려면 직접 관련 파일들을 일일이 찾아서 삭제해야 하므로 관리의 편의상 한곳에 모아놓는 것이 좋습니다. 보통 make명령으로 설치를 할 때 별도 옵션을 안 주면 기본으로 이 디렉토리에 설치되지만, 혹시 모르므로 다음과 같이 configure를 할 때 prefix 옵션으로 이 디렉토리를 지정해 주는 것이 좋습니다.

./configure --prefix=/usr/local

 

/var

로그(Log) 및 수신된 이메일이 저장되는 위치입니다.

서버 등을 운영할 때 차지하는 용량이 급격히 늘어날 수 있으므로 별도의 파티션으로 분리하는 것이 좋습니다. 특히 로그파일 등은 수시로 확인하고 불필요한 파일은 바로바로 지워주어야 용량 부족으로 인한 문제를 방지할 수 있습니다.

 

/var/log

여러 프로세스들이 쏟아내는 감당할 수 없는 로그파일들이 위치하는 디렉토리입니다. 보통 프로세스별로 하위 디렉토리가 존재하여 각 프로세스는 자신의 로그 디렉토리에 로그 파일들을 생성합니다.

이 디렉토리(와 하위디렉토리)에 위치하는 로그파일이 일정 크기보다 커지면 cron에 의해 하루에 한 번 실행되는 logrotate에 의해 access.log-YYYYMMDD와 같은 파일명으로 변경되고, 더 오래된 로그파일은 gzip으로 압축됩니다. 어느 정도 자동으로 관리되고 있기는 하지만, 주기적으로 로그 파일을 확인하고 오래된 로그파일들(*.gz)은 삭제해 주는 것이 좋습니다.

참고적으로, 로그파일을 모니터링하려면 다음과 같이 tail -f 명령을 사용하면 편리합니다. 예를 들어, 다음과 같이 쓰면 업데이트되는 Nginx 웹 서버 로그를 지속적으로 확인할 수 있습니다.

tail -f /var/log/nginx/access.log

 

서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
50 Linux [Bash] 자동완성 스크립트(Completion Script) 작성 방법과 동작 원리 TUW 2019.08.28 2386
49 Linux [Ubuntu] Windows와 멀티부팅 환경에서 시간이 맞지 않는 현상 해결하기 TUW 2017.06.08 19917
48 Linux [Ubuntu] 원격 Shell에서 로그인 사용자 디스플레이에 GUI 프로그램 실행하기 TUW 2016.03.06 4871
47 Linux Root권한 없이 Wireshark 사용하기 file TUW 2017.06.02 2397
46 Linux fstab과 sshfs fuse를 활용한 원격 디렉토리 자동 마운트하기 TUW 2016.01.11 12065
45 Linux 한글 입력기 나비(Nabi)에서 한/영 키가 인식되지 않는 경우 file TUW 2017.06.02 1803
44 Linux [VirtualBox] 가상머신 Windows 7 에서 Aero 기능 활성화하기 file TUW 2017.06.02 2705
43 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 방법 1 file TUW 2017.06.14 2407
42 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 배경 file TUW 2017.06.02 4160
41 Linux [Linux] Screen 터미널 에뮬레이션 프로그램 사용하기 TUW 2015.08.19 2702
40 Linux Intelli Backup: File system 및 Database 백업 자동화 Bash 스크립트 TUW 2017.06.14 2906
39 Linux [Linux] Sudo 명령의 Secure Path TUW 2015.04.24 3188
38 Linux [Linux] fdisk 활용 외: 파티션 생성, 배드블록 검사, 파일시스템 생성 TUW 2015.04.24 6831
37 Linux TCPDump를 활용하여 패킷 모니터링하기 TUW 2020.04.13 5264
36 Linux [ColorGCC] 컴파일 경고 및 오류메시지 컬러로 출력하기 file TUW 2017.06.02 8803
» Linux Linux 루트 디렉토리 구성 TUW 2018.01.04 12658
목록
Board Pagination Prev 1 2 3 4 Next
/ 4

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5