Linux

Linux 디렉토리 구조

LeeJaeJun 2024. 2. 22. 21:04
728x90
반응형

절대경로와 상대경로

  • 절대경로(Absolute Path)
    • 파일이나 디렉토리가 루트 디렉토리(/)부터 시작하여 특정 위치까지의 전체 경로
  • 상대경로(Relative Path)
    • 상대 경로는 현재 작업 디렉토리(현재 위치)를 기준으로 파일이나 디렉토리의 위치를 나타낸 경로
  1. 현재 작업 디렉토리가 /home/user라고 가정
    • 절대 경로: /home/user/Documents/example.txt
    • 상대 경로: Documents/example.txt
  2. 현재 작업 디렉토리가 /var/log라고 가정
    • 절대 경로: /var/log/syslog
    • 상대 경로: syslog
  3. 현재 작업 디렉토리가 /usr/bin이라고 가정
    • 절대 경로: /usr/bin/python
    • 상대 경로: python

 

루트 디렉토리 구조와 각 디렉토리의 특징

  1. / (Root Directory):
    • 시스템의 최상위 디렉토리입니다.
    • 모든 다른 디렉토리 및 파일은 이 디렉토리의 하위에 있습니다.
    • 운영 체제의 모든 파일 및 디렉토리가 이 디렉토리 아래에 있습니다.
  2. /bin (Binary Binaries):
    • 바이너리 실행 파일들이 있는 디렉토리입니다.
    • 주요 리눅스 명령어들이 이 디렉토리에 위치합니다.
    • 예를 들어, ls, cp, mv 등의 명령어들이 여기에 있습니다.
  3. /boot (Boot Loader Files):
    • 부팅 로더 파일과 커널 이미지가 있는 디렉토리입니다.
    • 부팅 프로세스에 필요한 파일들이 여기에 위치합니다.
  4. /dev (Device Files):
    • 장치 파일들이 있는 디렉토리입니다.
    • 시스템의 하드웨어 장치와 상호 작용하기 위한 특수 파일들이 여기에 있습니다.
  5. /etc (Etcetera):
    • 시스템의 설정 파일들이 있는 디렉토리입니다.
    • 대부분의 시스템 구성 파일들이 여기에 위치합니다. 예를 들어, 네트워크 구성, 사용자 계정 및 패스워드, 서비스 설정 등이 여기에 있습니다.
  6. /home (Home Directories):
    • 사용자의 홈 디렉토리들이 있는 디렉토리입니다.
    • 각 사용자에 대한 홈 디렉토리들이 여기에 있습니다.
  7. /lib (Library Files):
    • 공유 라이브러리 파일들이 있는 디렉토리입니다.
    • 프로그램이 실행될 때 필요한 라이브러리들이 여기에 위치합니다.
  8. /media (Removable Media):
    • 이동식 미디어(USB 드라이브, CD-ROM 등)가 마운트되는 디렉토리입니다.
    • 이동식 미디어를 마운트하여 사용할 때 여기에 접근할 수 있습니다.
  9. /mnt (Mount Point):
    • 일시적으로 파일 시스템을 마운트하는 디렉토리입니다.
    • 일반적으로 시스템 유지 보수 작업 또는 임시 파일 시스템을 마운트할 때 사용됩니다.
    • 마운트(mount): 파일 시스템을 특정한 디렉토리에 연결하는 것을 말합니다. 즉, 다른 저장 장치(하드 디스크, USB 드라이브, 네트워크 드라이브 등)에 저장된 파일들에 접근하기 위해 해당 장치를 시스템의 파일 트리에 연결하는 과정
    •  
  10. /opt (Optional Packages):
    • 추가적인 소프트웨어 패키지들이 설치되는 디렉토리입니다.
    • 주로 상용 소프트웨어나 사용자 지정 소프트웨어 패키지들이 여기에 설치됩니다.
  11. /sbin (System Binaries):
    • 시스템 관리용 바이너리 실행 파일들이 있는 디렉토리입니다.
    • 주로 시스템 관리자들이 시스템 구성을 위해 사용하는 명령어들이 여기에 위치합니다.
  12. /tmp (Temporary Files):
    • 일시적인 파일들이 있는 디렉토리입니다.
    • 시스템 및 사용자 프로세스들이 일시적으로 파일을 생성하고 사용할 때 여기에 위치합니다.
  13. /usr (Unix System Resources):
    • 시스템 리소스들이 있는 디렉토리입니다.
    • 시스템이 아닌 사용자가 사용하는 프로그램들이 저장되는 곳입니다.
    • 주로 시스템 소프트웨어 및 데이터가 여기에 위치합니다. 예를 들어, 사용자 프로그램, 라이브러리, 문서, 공유 데이터 등이 여기에 있습니다.
  14. /var (Variable):
    • 시스템이 실행되는 동안 변하는 파일들이 있는 디렉토리입니다.
    • 로그 파일, 캐시, 임시 파일 등이 여기에 위치합니다.
  15. /lost+found
    • 파일 시스템 오류가 발생했을 때, fsck(File System Consistency Check) 유틸리티가 손상된 파일이나 디렉토리를 복구할 때 사용하는 디렉토리입니다.
    • 일반적으로 사용자가 직접 파일을 저장하거나 관리하지 않습니다. 파일 시스템 관리 도구에 의해 자동으로 생성됩니다
  16. /proc
    • 프로세스 정보를 포함하는 가상 파일 시스템
    • 시스템에서 실행 중인 모든 프로세스에 대항 정보를 제공합니다. 예를 들어, 프로세스 ID, 메모리 사용량, 네트워크 상태 등의 정보를 제공합니다.
    • 일반적으로 시스템 관리 작언 및 모니터링 도구에서 사용됩니다.
  17. /root
    • 사용자의 홈 디렉토리를 나타내기 위해 사용
    • root는 시스템 관리자의 역할을 나타내는 것이고, /는 파일 시스템의 최상위 디렉토리를 가리키는 것
  18. /run
    • 시스템 부팅 중 생성되는 런타임 데이터와 PID 파일(Process Identifier, 데몬 프로세스의 실행 상태를 관리하고 추적하기 위해 사용되는 파일로, 해당 프로세스의 프로세스 ID를 저장)을 포함하는 디렉토리
    • 시스템이 부팅될 때 생성되며, 임시 파일 및 프로세스 관련 데이터를 저장하는 데 사용됩니다.
    • 데몬 프로세스(Daemon process): 백그라운드(background)에서 실행되는 컴퓨터 프로그램이며, 사용자와의 상호작용 없이 시스템이나 다른 프로세스를 지원하거나 관리하는 역할을 수행
  19. /snap
    • Snap 패키지 관리 시스템에 의해 설치된 스냅 패키지들을 포함하는 디렉토리
    • Snap 패키지는 응용 프로그램과 그 종송석을 캡슐화하여 시스템에 설치하고 실행하는 데 사용됩니다.
  20. /srv
    • 서비스 관련 데이터를 저장하는 디렉토리
    • 네트워크 서비스(ex. HTTP, FTP 등)의 데이터 파일들을 보관하는데 사용될 수 있습니다.
  21. /sys
    • 커널과 관련된 정보를 포함하는 가상 파일 시스템
    • 시스템의 하드웨어 및 커널 매개변수와 같은 시스템 정보에 대한 접근을 제공합니다.
    • 일반적으로 /proc과 함께 시스템 정보를 관리하고 모니터링하는 데 사용됩니다.

 

etc directory

  1. etc/passwd:
    • 사용자 계정에 대한 정보를 포함하는 파일입니다. 각 행은 하나의 사용자를 나타내며, 사용자 이름, 홈 디렉토리 경로, 사용자 ID 등의 정보를 포함합니다.
  2. /etc/group:
    • 그룹 정보를 포함하는 파일입니다. 각 행은 하나의 그룹을 나타내며, 그룹 이름, 그룹 ID, 해당 그룹에 속한 사용자 목록 등의 정보를 포함합니다.
  3. /etc/shadow:
    • 사용자 계정의 보안 관련 정보(예: 암호화된 비밀번호)를 포함하는 파일입니다. 이 파일은 보안상의 이유로 일반 사용자가 읽을 수 없습니다.
  4. /etc/hosts:
    • 호스트 이름과 IP 주소를 매핑하는 파일입니다. 일반적으로 시스템이 로컬 네트워크에서 사용하는 호스트 이름을 관리하는 데 사용됩니다.
  5. /etc/hostname:
    • 시스템의 호스트 이름을 저장하는 파일입니다. 이 파일은 시스템의 호스트 이름을 지정하고 변경하는 데 사용됩니다.
  6. /etc/network/interfaces (또는 /etc/netplan/):
    • 네트워크 인터페이스의 설정을 관리하는 파일이거나 디렉토리입니다. 네트워크 설정을 수정하고 관리하는 데 사용됩니다.
  7. /etc/fstab:
    • 파일 시스템 테이블 파일로, 시스템 부팅 시에 마운트할 파일 시스템을 지정하는 데 사용됩니다. 각 파일 시스템의 마운트 지점과 옵션을 설정합니다.
  8. /etc/apt/sources.list (또는 /etc/apt/sources.list.d/):
    • APT(Advanced Packaging Tool) 패키지 관리 시스템의 소프트웨어 저장소 정보를 포함하는 파일 또는 디렉토리입니다. 시스템 패키지 관리 및 업데이트를 위해 사용됩니다.
  9. /etc/apt/apt.conf (또는 /etc/apt/apt.conf.d/):
    • APT 패키지 관리 도구의 전반적인 동작을 설정하는 파일이거나 디렉토리입니다. APT의 동작을 수정하고 사용자 정의 설정을 추가하는 데 사용됩니다.
  10. /etc/ssh/sshd_config:
    • SSH 서버의 설정 파일입니다. SSH 서버의 동작을 제어하는 데 사용됩니다. 예를 들어, 인증 방법, 포트 번호, 사용자 접속 권한 등을 설정할 수 있습니다.
  11. /etc/crontab (또는 /etc/cron.d/):
    • cron 시스템의 전반적인 설정 파일이거나 디렉토리입니다. cron은 예약된 작업(job)을 실행하는 시스템 서비스로, 정기적인 작업 스케줄을 설정하는 데 사용됩니다.
  12. /etc/sudoers (또는 /etc/sudoers.d/):
    • sudo 명령의 권한 설정 파일이거나 디렉토리입니다. 사용자 또는 그룹에게 특정 명령을 루트 권한으로 실행할 수 있는 권한을 부여하는 데 사용됩니다.
  13. /etc/environment:
    • 시스템 환경 변수를 설정하는 파일입니다. 시스템 전체적으로 사용할 환경 변수를 설정하는 데 사용됩니다.
  14. /etc/sysctl.conf (또는 /etc/sysctl.d/):
    • 시스템 커널 설정을 수정하는 데 사용되는 파일이거나 디렉토리입니다. 시스템의 네트워크, 메모리, 파일 시스템 등의 커널 파라미터를 설정하는 데 사용됩니다.
  15. /etc/nginx/nginx.conf (또는 /etc/nginx/sites-available/):
    • Nginx 웹 서버의 주요 설정 파일이거나 가상 호스트 설정 파일들이 있는 디렉토리입니다. Nginx 웹 서버의 동작을 설정하고 가상 호스트를 관리하는 데 사용됩니다.
    • Nginx(엔진엑스): 높은 성능과 안정성을 가진 오픈 소스 웹 서버 및 리버스 프록시 소프트웨어로 정적 파일 서빙, 동적 콘텐츠 처리, 로드 밸런싱, SSL 종료, 웹 애플리케이션 프록시 등 다양한 용도로 사용. 주로 높은 트래픽을 처리해야 하는 웹 사이트나 웹 애플리케이션에 적합

 

find / -name *.txt 1>> /dev/null
# 루트 디렉토리(/)에서 확장자가 .txt인 모든 파일을 찾고, 해당 결과를 표준 출력(stdout)으로 보냅니다. 
# 1>> /dev/null은 표준 출력을 /dev/null로 리다이렉트하는 것으로, 결과를 무시하고 버립니다.
# 즉, .txt 파일을 찾는 작업의 결과를 화면에 출력하지 않고 버립니다.

find / -name *.txt 2>> /dev/null
# 표준 에러(stderr)로 발생한 오류 메시지를 /dev/null로 리다이렉트하여 오류를 무시합니다. 
# 따라서 오류 메시지도 화면에 출력하지 않고 버립니다.

/bin/bash
# /bin/bash를 실행하여 새로운 bash 셸을 시작합니다.
# bash가 bin에 들어있다는 것을 명확히 표시!

/bin/ls
# /bin/ls를 실행하여 현재 디렉토리의 파일 목록을 출력합니다.
# ls가 bin에 들어있다는 것을 명확히 표시!

head /var/log/apt/history.log
# /var/log/apt/history.log 파일의 상위 몇 줄을 출력합니다.
# 이 파일은 APT 패키지 관리 도구의 사용 기록을 포함하고 있습니다.

ls -al > /dev/null
# ls -al 을 입력했을 때 아무런 출력이 없도록 하기
# 현재 실행한 ls에 대해서만 아무런 출력이 없도록 하는 것임

hihi 2>/dev/null
# hihi 라는 명령어(존재하지 않는 명령어)를 입력해도 아무런 오류 메시지가 없도록 하기(이 명령어 실행할 때만)
# 설정이 유지되는 것이 아니라 지금 친 hihi에 대한 오류 메세지가 안뜨는 것임

sudo cat /etc/shadow
# 모든 사용자의 암호화된 비밀번호를 출력하기

 

/dev/null

  • 리눅스 및 유닉스 계열 운영 체제에서 사용되는 특수한 파일
  • 일반 파일이 아니며, 데이터를 버리는 용도로 사용
  • /dev/null은 빈 파일이며, 모든 데이터가 폐기
  • 입력 데이터를 수신하면 아무것도 수행하지 않고 그대로 폐기
  • 즉, /dev/null로 데이터를 보내면 데이터는 완전히 삭제되고, 어디에도 저장되지 않습니다.
728x90
반응형

'Linux' 카테고리의 다른 글

Permission of Linux  (0) 2024.02.23
Ubuntu 운영체제의 패키지  (0) 2024.02.22
"chmod: changing permissions of 'file': Operation not permitted" 오류  (0) 2024.02.22
Redirect  (0) 2024.02.22
Ubuntu 운영체제 명령어  (0) 2024.02.21