데이터로그😎
[Linux] 4. 디렉토리 구조와 파일 찾기 본문
디렉토리 구조
참조: https://www.thegeekstuff.com/2010/09/linux-file-system-structure/
linux에서 root 위치에서 pwd를 실행하면 / 라고 뜬다. 이 때 root의 하위 디렉토리들을 살펴보자.
(base) ubuntu@JeeYeon:/$ tree -L 1
.
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── init
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
├── var
.....
디렉토리 | 설명 |
/ (root) | - 루트 디렉토리, 최상단 디렉토리 - root user만이 이 디렉토리에 쓸 권한이 있다. |
/bin | - User Binaries (Binary = 이진수 = 컴퓨터에서 실행가능한 프로그램 = bin) - 일반 사용자들이 사용할 명령들이 위치한다. |
/sbin | - System Binaries - 시스템 실행 프로그램 - 시스템 관리자가 시스템을 유지하기 위한 목적으로 사용되는 명령어들이 위치한다. - 예 : iptables, reboot, fdisk, ifconfig, swapon |
/etc | - Configuration Files (설정 파일) - 프로그램의 설정 파일들이 들어있다. (.conf) - 예: host.conf, sysctl.conf |
/var | - Variable Files - 내용이 바뀔 수 있는 파일들이 들어있다. - 하위파일: backups, cache, crash, lib, local, lock, log, mail, opt, run, snap, spool, tmp - 예를 들어 log 디렉토리에는 web server에서 사용자들의 행동이 기록될 수 있다. 수시로 변한다. |
/tmp | - Temporary Files - 임시파일들이 저장된다. - 시스템을 리부트하면 /tmp 하위의 파일들은 모두 삭제된다. |
/home | - Home Directories - 모든 사용자들의 개인 파일들을 저장한다. - 예: /home/john (john이라는 user가 설치한 파일), /home/nikita (nikita라는 user가 설치한 파일) - 현재 사용자의 home directory로 순간이동 할 수 있는 명령어 = cd ~ |
/lib | - System Libraries - bin & sbin의 프로그램들이 사용하는 라이브러리를 담고 있다. |
/usr | - User Programs - binaries, libraries, documentation, source-code들이 포함되어 있다. - user가 설치하는 프로그램들은 /usr 에 설치되고, 기본적으로 unix 계열에 설치가 되어서 bundle 형식으로 제공되는 프로그램들은 /bin, /sbin 에 저장된다고 생각해도 된다. |
파일 찾기
파일 용도
1.데이터 보관
2. 명령 보관 (실행 파일)
① locate
- locate는 디렉토리를 뒤지지 않고 데이터베이스를 뒤진다. 데이터베이스는 컴퓨터 안에 저장된 파일들에 대한 정보를 담고 있다. 따라서 locate는 훨씬 빠르게 파일을 찾을 수 있다.
# log라는 확장자를 가진 파일을 모두 찾아주세요 locate *.log
- mlocate = locate가 사용하는 데이터 베이스
# mlocate를 update하는 법 sudo updatedb
② find
- find는 locate와는 다르게 디렉토리를 실제로 뒤진다. locate 보다 성능이 안좋을 수 있다.
- find / = root 디렉토리부터 찾겠다.
- find . = 현재 디렉토리부터 하위 디렉토리를 찾겠다.
sudo find / -name *.log # root에서 부터 찾겠다(따라서 sudo 명령어 필요)
find . -name *.log # 현재 위치에서부터 찾겠다
③ whereis
- 원하는 실행파일을 찾아주는 명령어
- ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
(base) ubuntu@JeeYeon:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
/usr/bin/ls => ls의 위치 , /usr/share/man/man1/ls.1.gz => ls의 매뉴얼 위치
여기서 궁금증..!
ls는 /usr/bin/ls 에 위치하는데 우리는 명령어로 /usr/bin/ls를 치지 않고 그냥 ls만 쳐도 기능을 실행할 수 있다.
왜일까??? 이게 다 $PATH 덕분!!!
echo $PATH를 입력하면 PATH 안에 있는 모든 경로를 보여준다.
ls를 명령어로 입력하고 엔터를 치면 PATH 변수에 담겨있는 디렉토리를 모두 검색하여 ls 실행파일이 존재하는지 차례대로 뒤져서 ls가 발견되면 실행하는 것.
따라서~~ 우리가 명령어를 입력할 때 명령어의 위치를 전체 입력하지 않고 명령어만 입력하여 실행할 수 있다는 것~~
(base) ubuntu@JeeYeon:~$ echo $PATH
/home/ubuntu/.local/bin:/home/ubuntu/miniconda3/bin:/home/ubuntu/miniconda3/
condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/
games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Python312/Scripts:/mnt/c/
Python312:/mnt/c/Program Files/Common Files/Oracle/Java/javapath:/mnt/c/
Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/WINDOWS/
system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/
System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/
c/Program Files/Git/cmd:/mnt/c/ProgramData/Anaconda3:/mnt/c/ProgramData/
Anaconda3/Library:/mnt/c/ProgramData/Anaconda3/Scripts:/mnt/c/Users/
JeeYeon Kim/AppData/Roaming/Python/Python39/Scripts:/mnt/c/Program Files/Graphviz/bin:/mnt/c/Program Files/gsudo/Current:/mnt/c/Program Files/Bandizip:/mnt/c/Program Files/dotnet:/mnt/c/Program Files/nodejs:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Users/TEMP/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/TEMP/AppData/Local/GitHubDesktop/bin:/mnt/c/Users/TEMP/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/TEMP:/mnt/c/Users/TEMP/AppData/Roaming/Python/Python39/Scripts:/mnt/c/Users/TEMP/AppData/Roaming/npm:/mnt/c/Program Files/nodejs/npm:/mnt/c/Program Files/nodejs/node:/snap/bin:/home/ubuntu/hadoop-3.3.5/bin:/home/ubuntu/spark-3.2.4/bin:/usr/lib/jvm/java-11-o
'Data Engineering' 카테고리의 다른 글
[Linux] 6. 사용자 (0) | 2024.01.16 |
---|---|
[Linux] 5. Process와 실행 (daemon, cron) (0) | 2024.01.16 |
[Linux] 3. Shell & Shell script (0) | 2024.01.15 |
[Linux] 2. IO Redirection - output (0) | 2024.01.15 |
[Linux] 1. 리눅스 기초 (0) | 2024.01.14 |