티스토리 뷰

리눅스를 배울 때 한번쯤은 듣는 말이 "리눅스의 모든 것은 파일"이라는 것이다.

필자도 듣기로는 자주 들었지만, 실제로 어떤 의미인지는 잘 와닫지 않았다.

그냥 "리눅스에서 파일이 자주 쓰인다" 정도로만 이해하고 넘어간 사람도 있을 것이다.

 

그러나 위에서 한 말은 사실 리눅스를 한 문장으로 요약한 말이나 다름이 없다.

"리눅스에서 모든 것이 파일이다"는 것은 어떤 비유나 은유가 아니다.

 

실제로 모든 것이 파일로 저장되기 때문에 나온 말이다.

 

 

리눅스 기본 디렉터리 구조


"리눅스에서 모든 것이 파일이다" 이라는 리눅스의 기본 디렉터리 구조를 이해하면 확실히 알 수있다.

 

위 그림은 우리가 root에서 흔히 ls 명령어로 볼 수 있는 리눅스의 디렉터리들이다.

평소에 그냥 지나치는 경우가 많은데, 사실 저 디렉터리들은 전부 하나하나 의미를 가지고 있으며, 그 의미만 알아도 리눅스에서 발생하는 에러의 대부분을 처리할 수 있다.

 

각 디렉터리가 의미하는 바는 다음과 같다.

디렉토리 명 설명
home 각 사용자들의 홈 디렉토리가 생성되는 곳.
사용자를 추가하면 사용자의 id와 동일한 디렉토리가 이곳에 자동으로 생성.
media CD_ROM이나 USB같은 외부 장치를 마운트하는 디렉토리
opt 추가 응용 프로그램 패키지가 설치되는 디렉토리.
패키지 매니저가 관리하며, 주로 배포판에서 제공하는 기본 패키지 외의 프로그램이 설치.
bin ls나 cd같은 기본적인 명령어가 저장된 디렉토리.
sbin fdisk같이 root 권힌으로 실행할 수 있는 명령어가 저장된 디렉터리.
dev 시스템 장치파일들이 저장되어 있는 디렉토리.
tty같은 터미널이나 SATA 디스크 장치 파일들이 존재
root root계정의 홈 디렉토리. ('/' 디렉토리 X)
sys 리눅스 커널관련 정보가 있는 디렉토리.
usr 기본 실행파일과 라이브러리 파일, 헤더 파일등의 파일이 저장되어있는 디렉토리.
boot 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리.
var 시스템 운영중에 발생한 데이터와 로그가 저장되는 디렉토리.
lib 커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈파일 등이 존재하는 디렉토리
tmp 시스템 사용중에 발생한 임시데이터가 저장. (부팅 시 초기화)
srv FTP나 Web등 시스템에서 제공하는 서비스의 데이터가 저장되는 디렉토리.
run 실행중인 서비스와 관련된 파일이 저장되는 디렉토리.
proc 프로세스 정보 등 커널 관련 정보가 저장되는 디렉토리.
가상 파일 시스템으로 메모리에 존재하는 작업들이 파일 형태로 저장
mnt media와 비슷하게 외부 장치를 임시로 마운트하는 디렉터리.
media는 커널에서 자동으로 마운트 해준다면, mnt는 사용자가 직접 마운트하는 용도로 사용.
etc 리눅스 설정을 위한 각종 파일들을 가지고 있는 디렉토리.

 

위에서 보면 프로세스, 부팅, 외부장치,명령어까지 모두 파일로 저장하여 관리한다.

때문에 오류가 발생시 그 부분의 해당하는 디렉터리를 확인한다면 오류의 원인과 결과를 쉽게 파악이 가능하다.

 

또한 여러 디렉터리로 분류된 것 같지만, 사실 root라는 최상위 디렉토리 안에 존재한다

즉 리눅스는 단 하나의 root 디렉터리로 이루어져 있다고 할 수 있다.

효율적인 관리를 위해 이런 트리 구조를 사용해 계층적으로 구성하는 것이다.

 

 

리눅스 파일의 종류


1.일반 파일

데이터 저장에 사용되는 파일로, 리눅스에서 사용되는 파일의 대부분이 여기에 해당한다.

텍스트,이미지,실행 파일등이 여기 속하고, 우리가 파일이라고 하면 사실 대부분의 경우 일반파일을 의미한다.

 

2.디렉터리

앞써 말한 디렉터리도 사실 파일의 한 종류이다.

하위 파일들의 주소를 저장하고 있는 파일로 실제 파일들이 해당 디렉터리에 저장된 것은 아니다.

 

3.링크 파일

원본 파일을 대신하여 사용하기 위해 다른 파일명으로 링크된 파일로, 윈도우의 바로가기와 유사하다.

흔히 c언어에서 사용하는 포인터가 여기에 해당한다.

 

4.장치 파일

하드 디스크나 cpu, CD-ROM같은 유형의 장치들을 파일화하여 관리하는 파일이다.

 

 

 

실제 모습


다음은 실제로 어떤 형태로 파일이 저장되었는 지를 직접 확인한 결과이다.

 

 

1. /bin

기본 명령어가 저장된 디렉터리이다.

파일들을 ls명령어로 확인하니, cat,chmod,cp, 심지어 ls까지 명령어가 저장되어있다.

 

2. /sys/class/net

다음은 ifconfig로 자주 보는 네트워크 인테페이스이다.

 

 

enp0s3,enp0s8,lo 같은 네트워크 디바이스가 존재한다.

그럼 sys 디렉터리의 하위 디렉터리인 net에 ls를 해보자

 

보면 알 수 있듯이 네트워크 인터페이스들의 정보 파일 형태로 저장되어 있다.

 

 

만약 이때 새로운 인터페이스가 추가 된다면?

다음은 dummy인터페이스를 추가한 명령이다.

 

 

ifconfig로 확인하면 추가가 잘된 모습을 볼 수 있

 

net 디렉터리에도 잘 추가되어 있다.

'개발 > 리눅스' 카테고리의 다른 글

리눅스 - 파일 시스템 VFS 2  (0) 2024.05.28
리눅스 - 파일 시스템 VFS 1(superblock,inode)  (0) 2024.05.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함