데이터로그😎

[Linux] 4. 디렉토리 구조와 파일 찾기 본문

Data Engineering

[Linux] 4. 디렉토리 구조와 파일 찾기

지연v'_'v 2024. 1. 15. 23:10

디렉토리 구조

참조: 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
.....

 

https://www.thegeekstuff.com/2010/09/linux-file-system-structure/

디렉토리 설명
/  (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