| 디렉토리 | 설명 |
|---|---|
/ | 루트 디렉토리. 모든 경로의 시작 |
/bin | 필수 실행 파일 (ls, cp, mv, bash 등) |
/sbin | 시스템 관리자용 명령어 (ifconfig, reboot 등) |
/boot | 부팅에 필요한 파일 (커널, grub 등) |
/dev | 장치 파일 (하드디스크, USB, 터미널 등) |
/etc | 설정 파일 (passwd, hosts, ssh/ 등) |
/home | 일반 사용자 디렉토리 |
/lib | 기본 시스템 라이브러리 (/bin, /sbin에서 사용하는 .so 파일) |
/media | 외부 장치 마운트 위치 (USB, CD 등) |
/mnt | 임시 마운트 지점 |
/opt | 추가 소프트웨어 설치 위치 |
/proc | 가상 파일 시스템, 커널/프로세스 정보 (/proc/cpuinfo, /proc/1234) |
/root | root 사용자 홈 디렉토리 |
/run | 시스템이 부팅된 후 일시적 데이터 저장 (PID, lock, socket 등) |
/tmp | 임시 파일 저장소 (재부팅 시 삭제) |
/usr | 사용자용 프로그램 및 라이브러리 (/usr/bin, /usr/lib) |
/var | 로그/메일/캐시 등 변경되는 데이터 (/var/log, /var/tmp) |
/bin
ls, grep, apt의 기본 명령어부터, git같은 설치 패키지 명령어까지 들어있다.git, python등의 사용자용 일반 명령어는 /usr/bin이라는 디렉토리에 위치해있다. 하지만 현재 결과는 기본 명령어부터 사용자용 일반 명령어도 있음을 확인할 수 있다./usr/bin과 /bin의 구분을 명시하지 않기 때문이다.
/bin디렉토리가 /usr/bin을 가리키는 심볼릭 링크임을 확인할 수 있다. 즉, /bin과 usr/bin의 기능적 차이는 없다./bin디렉토리에는 모두 컴파일된 바이너리 파일(ELF 포맷)으로 되어있다. (ELF포맷은 리눅스 실행파일 포맷이다.)/bin/ls -> ls 명령어가 실행됨/bin을 PATH에 넣었기 때문에 ls만 쳐도 /bin/ls가 실행됨cd는 bash의 빌트인 명령어 이므로 /bin디렉토리에 없음/sbin시스템 관리에 사용되는, 관리자용 명령어 모음 디렉토리이다.

기존의 /bin디렉토리와 별 차이가 없어보이지만, /sbin디렉토리에는 ifconfig, fsck, reboot, mount, iptables와 같은 시스템 관리에 필요한 명령어 실행 파일이 들어있다.

/sbin디렉토리 또한, /usr/sbin디렉토리의 심볼릭 링크이다. 즉, /sbin과 /usr/sbin의 차이는 없다./bootvmlinuz : 압축된 리눅스 커널 이미지initrd : 초기 드라이버 이미지grub/ : GRUB 부트 로더 설정 파일 및 모듈config-<커널버전> : 커널 컴파일 당시 설정 옵션 기록System.map-<커널버전> : 커널 심볼 테이블
/boot디렉토리에서 주요 파일들은 aws관련 파일에 대한 심볼릭 링크로 설정되어있다. (EC2는 가상화 환경이므로 일반적인 boot파일과는 호환 안됨 -> AWS전용 버전 파일로 대체됨)
/boot가 쓰이는 방식/boot디렉토리에 있는 vmlinuz, initrd파일 로드/dev
cpu, disk와 같은 디렉토리에 존재한다./sda : 하드디스크/tty : 현재 터미널 세션 (tty2, tty4같이 숫자가 붙어있으면 여러 개의 세션이 존재)/null : 없음을 의미하는 장치 (쓰레기통 역할), 어떠한 데이터든 /dev/null로 보내면 사라짐/zero : 0으로 채워진 무한 스트림, 필요한 만큼 0값을 뽑아내서 사용할 수 있다. (메모리를 초기화할 때 사용)/random, /urandom : 랜덤 데이터 생성 장치/pts/ : 가상 터미널 (ssh 접속용)/dev/null, /dev/zero, /dev/random같은 파일은 얼핏 보면 /bin디렉토리에 들어가야하는 프로그램처럼 보이지만, 실제로는 파일처럼 읽고 쓰는 대상이다./dev디렉토리에 위치해 있다./etc
/etc/passwd : 사용자 계정 정보/etc/systemd/ : 시스템 부팅 관리/etc/ssh/ : SSH 서버 설정 파일apt, python3과 같은 패키지 설정 파일도 존재한다./lib, /lib32, /lib64, /libx32/bin, /sbin에 있는 실행파일이 실행하는 프로그램이 돌아가기 위한 라이브러리가 들어있다./lib : 전통적 32비트용 (최근에는 64비트 라이브러리도 사용함)/lib32 : 64비트 리눅스에서 32비트 프로그램 실행용/lib64 : 64비트 프로그램 전용/libx32 : 64비트 CPU용 특수 32비트 ABI프로그램 전용
/usr의 라이브러리 디렉토리의 심볼릭 링크이다./media/media밑에 마운트된다./mnt/media와 차이점은 /media는 자동으로 외부장치가 마운트되지만, /mnt는 사용자가 수동으로 마운트를 진행해야한다는 점이다./optoptional의 약자로, 외부 소프트웨어를 넣는 디렉토리이다./proc
/proc/cpuinfo : CPU정보/proc/meminfo : 메모리 사용량 정보/proc/uptime : 시스템 부팅 후 지난 시간/proc/version : 커널 버전/proc/[pid]/ : pid의 id를 가진 프로세스의 상세 정보/root/run
docker.sock라는 소켓파일을 통해, 도커 컨테이너와 호스트가 통신할 수 있도록 한다./tmp
/usr
/bin/, /sbin, /sbin/, /lib의 심볼릭 링크가 가리키는 디렉토리들이 /usr에 모여있다./usr/include : C/C++ 헤더파일/usr/local : 사용자가 직접 설치한 프로그램/라이브러리 (패키지 매니저랑 별개)/usr/src : 커널 소스 저장/var
/var/log : 시스템의 로그 파일이 저장된다./var/tmp : 오래 저장되는 임시 파일이 저장된다./var/spool : 대기중인 작업 파일이 저장된다./var/lib : 프로그램 자체 데이터베이스가 저장된다. (mysql 데이터 파일)/var/cache : 프로그램 캐시 데이터/var/run : /run의 심볼릭 링크/var/log의 구조이다.
logrotate라는 리눅스 표준 로그 관리 도구가 이를 관리한다.