🐾Server🍏/🍏LINUX

[MAC] 리눅스 파일 시스템 구조 /셀 스크립트 /디렉토리

김쏘니 2024. 8. 30. 15:43

👾 파일 시스템 구조

리눅스 파일 시스템에서 다음 디렉토리의 역할에 대한 설명을 하시오.

 

 

/ (루트 디렉터리) 

  • 파일 시스템의 최상위 디렉토리
  • 모든 파일과 디렉토리는 이 루트 디렉토리를 기준으로 계층 구조를 형성
  • 모든 디렉토리와 파일의 시작 지점
  • 모든 절대 경로는 / 에서 시작하며, / 밑에 여러 시스템 디렉토리들이 존재

 

 

사실 난 여기까지 완전 이지하지~거의 르세라핌이 돼서 커피 한잔의 여유를 보여주기까지 이르는데

 

 

 

 

 

그. 러. 나.!

 

 

하위 디렉토리를 설명 하려고 했던 나는 냅다 생각난 명령어를 입력해버렸고 이걸 다시 돌아가는 방법을 몰라버리는 실수를 하고야 마는데...

 

 

물론 해결은 가능하다. 나는 그냥 /boot에 들어온거니까 당황하지말자.

 

플랜에이에서 마실 수 있는 커피 마시면서 다시 한 번 도오전!

 

 

(노오오오오력)

 

 

나도 최대한 예쁘게 블로그를 꾸미고 싶었으나 어째서인지 VMware 캡처해서 자르면 몇 년은 묵어버린 짤처럼 화질이 구려진다.🤷🤷‍♀️

 


 

여기서 한 번 정리하자면

cd란?

 

"Change Directory"의 약자로, 현재 작업 중인 디렉토리를 변경하는 데 사용되며 터미널이나 쉘에서 사용자가 특정 디렉토리로 이동할 수 있도록 해주는 기본 명령어

 

 

대충 cd = 이동을 도와주는 이동수단이라고 생각하면 될 것 같다.

🚌🚕🚢🚃✈️ = cd 
cd /디렉토리경로

 

🐈‍⬛활용하기

🐾디렉토리 경로로 들어가기

cd /home/ditto

 

 

 

🐾 홈 경로로 들어가기

cd
cd ~

 

 


 

난 이때 쯤이면 궁금해졌다. 같은 용도로 쓰는건데 뭐하러 두가지 방법이 있는걸까 저 물결은 카톡 대답할 때 너무 딱딱해보이니까 쓰는 용도밖에 쓰지 않았는데 난 또 어라바리 gpt 선생님께 물어보기로 한다.

 

 

저 물결이 틸드라고 배웠던 것 같은데 또 까먹..나중에 또 그냥 물결 어쩌고라 말할 가능성 127%

 

 

저는 이 말이 이해가 되지 않습니다 선생님.

 

결국 찐선생님을 소환을 했고 이제 이해가 되었다.

 

그러니까 다른 계정의 홈 디렉토리를 들어가고 싶을 떄 쓰는거지!

 

사실 머릿속으론 대충 이해했는데 누군가한테 설명할 때 대충 안다고 넘어가는 우체국 아죠씨가 될 수 없으니까 인터넷 센세한테 물어보도록 한다.

 

 

??? : 엔시티에서 누가 제일 잘 생겼는지 알아? 김쏘니 : 응, 알아.

 

동그라미 친 거 보이세요? 이 선생님 투머치 토커셨어;;

 

Shell Script(쉘 스크립트)란?
  • 쉘(Shell)*에서 실행되는 명령어들을 모아 작성한 스크립트 파일
  • 리눅스나 유닉스와 같은 운영 체제에서 명령어들을 자동으로 실행하여 반복적인 작업을 자동화하거나 시스템 관리 작업을 효율적으로 수행하는 데 사용
Shell(쉘)이란? : 운영 체제와 사용자 간의 인터페이스로, 사용자가 입력한 명령어를 해석하고 실행
  • 종류 : Bash (Bourne Again Shell), Zsh, Ksh
  • 목적 : 반복적인 작업(예: 파일 백업, 로그 관리, 서버 모니터링 등)을 자동화
  • 기본 구조 : 일반적으로 .sh 확장자를 가지며, 파일의 첫 번째 줄에 해당 스크립트가 어떤 쉘을 사용할 것인지를 명시
  • 사용 방법 ( vi, vim, nano )
1. vi / vim (Vi Improved)
vi 는 대부분의 유닉스 시스템에서 기본으로 제공되는 텍스트 편집기
vim 은 vi의 확장 버전으로, 더 많은 기능과 개선된 사용자 인터페이스를 제공.

2. nano
사용하기 쉽고 간단한 터미널 기반 편집기. 기본적으로 대부분의 리눅스 배포판에 설치 되어 있음.

3. emacs
매우 강력한 텍스트 편집기로, 다양한 프로그래밍 언어를 지원하고 많은 커스터마이징 기능을 제공.
(초보자에게는 다소 복잡할 수 있지만, 고급 사용자나 개발자들이 선호)

4. gedit
GNOME 데스크탑 환경에서 기본으로 제공되는 GUI 텍스트 편집기. 직관적인 그래픽 인터페이스를 제공하며, 일반적인 텍스트 편집 기능 외에도 플러그인을 통해 기능을 확장.

 

 

 

하고 싶은 말은 많으나 언어 장벽은 디플이 물러쳐줄 것이다 .이렇게 한 이유는... 우리 디토 귀엽죠 사랑스럽죠 입에 넣고 와라랄라라 해주고 싶죠.

 

Ditto is an adoralbe, cuddly cat and I’m very proud of him.

이렇게 예시를 보여주기 위해서

💡혹시나 하는 마음에

i : 편집 키
esc : 편집 그만하고 싶을 때 누르는 키
:wq 저장하고 나가기
:x 저장하고 나가기(wq와 동일)
:wq! 강제 저장 키
:q 저장 안하고 나갈 때 키
:q! 강제로 나갈 때 키

 

👁️‍🗨️ 쉘 스크립트 편집기 중 vi를 종료 할 때 shift 누르고 세미클론을 누른 뒤 :wq

 

셀 스크립트 파일 복사 예시

 

 

~ (틸드)란?

 

  • 사용자의 홈 디렉터리
  • = /home/user [ 현재 내가 사용하고 있는 username은 ditto 이므로 =/home/ditto ]
  • 다른 계정의 홈 디렉터리 이동
  • 홈 디렉토리의 하위 디렉토리를 간단히 지정

 

 


🐾 상위 디렉토리로 이동하기

cd ..

 

 

어째서 / 상태에선 cd ..가 가지 않았을까? 정답 : 루트가 최상위 디렉토리이기 때문

 

 

 

🐾 이전 디렉토리로 이동하기

cd -

할 말이 없다. 김쏘니 왜 이렇게 잘 하는거야 (후훗)

 

그렇지만 사실 풀어야하는 문제는 반도 가지 못했는데!

 


🌱 / 아래에 있는 하위 디렉토리

 

/boot(부트 디렉토리)

  • 부팅 과정에 필요한 파일들을 저장하는 중요한 디렉터리(운영 체제를 시작하는 데 필수적인 커널 이미지, 초기 램 디스크 이미지(initrd 또는 initramfs), 그리고 부트 로더와 관련된 설정 파일들이 포함)
  • 커널 이미지 저장(vmlinuz(vm리눅스)로 시작하는 리눅스 커널 이미지 파일)이 /boot 디렉터리에 저장
커널 : 운영 체제의 핵심 부분, 하드웨어 소프트웨어 간의 상호 작용을 관리하고 시스템을 제어하는 역할
  • 초기 램 디스크 이미지 (initrd또는 initramfs)
initrd (initial RAM disk) / initramfs (initial RAM filesystem)
: 시스템 부팅 시 커널이 초기화되고 실제 루트 파일 시스템을 마운트하기 전에 필요한 파일들을 임시로 담고 있는 초기화 디스크 이미지. 시스템이 부팅될 때 하드웨어 드라이버를 로드하거나 필요한 파일 시스템을 마운트하는 등의 작업을 수행합니다.
  • boot loader(부트 로더) 파일
boot loader
: 시스템이 시작될 때 운영 체제를 로드하고 실행하는 프로그램.
🐈‍⬛리눅스에서 가장 흔한 부트 로더는 GRUB (GRand Unified Bootloader)
🐾 /boot 디렉터리에는 부트 로더의 실행 파일과 구성 파일(예:grub.cfg)이 포함. 👉 운영 체제를 선택하고 부팅 프로세스를 제어.
  • 시스템 부팅 설정 파일
다양한 설정 파일들이 /boot 디렉터리에 저장
예를 들어, 부팅 시 로드할 커널의 버전, 부팅 명령어, 부팅 옵션 등을 정의하는 GRUB 구성 파일(grub.cfg)이 있음.

 

 

/boot 디렉터리는 리눅스 시스템이 부팅할 때 필요한 커널 이미지, 초기 램 디스크 이미지, 부트 로더 관련 파일 등을 저장하는 중요한 디렉터리. 시스템의 부팅과 관련된 필수적인 요소들을 관리하기 때문에, 시스템의 안정성과 가용성을 위해 매우 중요한 역할을 합니다.

 

💬 = 🫀

/bin 디렉토리

  • 리눅스 및 유닉스 계열 운영 체제에서 필수 실행 파일(바이너리)이 저장된 디렉터리
  • 이 디렉터리에 있는 프로그램들은 시스템 부팅, 유지 관리, 복구 등을 위해 항상 사용 가능해야 하며, 모든 사용자가 기본적으로 접근
  • 필수 시스템 명령어 저장
1. 운영 체제를 정상적으로 동작시키기 위해 필요한 기본적인 명령어와 유틸리티가 포함.
2. 이 명령어들은 대부분의 리눅스 시스템에서 공통적으로 사용되며, 시스템 부팅 과정에서도 필요.

 

⭐️ VMware에서 "바이너리"란 일반적으로 가상 머신(VM)이나 관련된 소프트웨어의 실행 파일 또는 데이터 파일을 의미

 

  • 단일 사용자 모드 지원
1. 단일 사용자 모드 로 부팅될 때도 /bin 디렉터리에 있는 명령어는 사용 가능.
2. 시스템 문제 해결 및 복구 작업을 수행할 때 사용되며, 이 모드에서는 필수적인 도구들만 사용 가능.
  • 모든 사용자에게 접근 가능
시스템의 모든 사용자에게 접근이 가능.
즉, 일반 사용자와 관리자가 공통적으로 사용하는 명령어들이 포함.
  • 시스템 유지보수와 복구
/bin에 포함된 명령어들은 시스템 복구나 문제 해결 작업 시 매우 중요.
  • 부팅 시점에서의 필수 명령어
시스템이 부팅되거나 최소 모드로 실행될 때 필요한 기본 명령어들 저장.
  • 모든 사용자 접근 가능
:기본 명령어들을 모든 사용자에게 제공하여 시스템의 일관된 동작을 보장.

 

명령어는 잘못 입력하면 다시 입력하면 되지만 직접 말하는 건 되돌릴 수 없으니까 조심 하자는 결론

 

/bin 디렉터리는 리눅스 파일 시스템에서 필수적인 실행 파일을 저장. 시스템의 부팅 과정에서 필요하거나 모든 사용자에게 필수적인 기본 명령어들이 포함되어 있어, 시스템의 정상적인 운영과 복구를 보장하는 역할을 합니다.


💬 = 🧠(기본설정)

 


/bin 디렉터리와 /usr/bin 디렉터리의 차이
/bin /usr/bin
기본적으로 사용하는 필수적인 실행 파일이 저장. 사용되는 일반 사용자 명령어와 응용 프로그램들이 포함.
루트 파일 시스템의 일부로, 최소한의 시스템 구성 요소에 포함. 추가적인 유틸리티나 응용 프로그램을 저장하며, 반드시 시스템 부팅 시에만 필요한 파일들은 아님.

 

⭐️Utility(유틸리티) : 컴퓨터 시스템에서 특정 작업을 수행하거나 시스템을 관리하기 위해 제공되는 작고 유용한 프로그램을 말합니다.


/etc 디렉토리

  • 리눅스 및 유닉스 계열 운영 체제에서 시스템의 주요 설정 파일을 저장하는 디렉터리
  • 시스템 전체의 동작과 구성에 필요한 다양한 설정 파일들이 이곳에 위치하며, 시스템 관리자가 시스템을 설정하고 구성하는 데 사용하는 중요한 파일들이 들어 있음.
  • 시스템 설정 파일 저장
시스템의 글로벌 설정 파일들 저장 (운영 체제 자체와 각종 서비스, 네트워크, 사용자 계정, 보안 정책, 디바이스 설정 등에 대한 정보를 포함)
예를 들어, 네트워크 설정 파일, 호스트 파일, 사용자 계정 정보 파일 등이 이 디렉터리에 위치
  • 서비스와 데몬 설정
다양한 서비스(예: 웹 서버, 데이터베이스 서버)와 데몬(백그라운드 프로세스)의 설정 파일이 /etc디렉터리에 저장.
이 설정 파일들은 각 서비스가 어떻게 작동해야 하는지를 정의.
  • 응용 프로그램  설정
시스템 전역적으로 설치된 응용 프로그램의 설정 파일들도 /etc 디렉터리에 저장.
예를 들어, SSH 서버 설정 파일(sshd_config)이나 데이터베이스 서버 설정 파일이 여기에 포함될 수 있음.

  • 시스템 초기화 스크립트 저장
부팅 시 시스템 초기화를 위해 사용되는 스크립트 및 설정 파일들이 /etc에 저장.
예를 들어, 시스템이 시작될 때 자동으로 실행되는 서비스나 스크립트를 정의하는 파일들이 여기에 포함.
  • 시스템 동작 제어
/etc 디렉터리의 파일들은 시스템의 거의 모든 측면을 제어.
  • 관리자 접근 허용
일반 사용자에게는 읽기 전용으로 설정되어 있고, 시스템 관리자(root 사용자)만이 이 디렉터리의 파일을 수정할 수 있음.
  • 백업의 중요성
시스템의 설정 파일들이 저장되어 있으므로, /etc 디렉터리의 손상이나 삭제는 시스템 작동에 치명적인 영향을 미칠 수 있음.
따라서 정기적인 백업이 중요.

 

 

 

슬슬 헷갈리기 시작함../bin 이랑 /etc가 다른 점이 뭔데여

 

일단..요약하자 정우야..

 

 

/etc 디렉터리는 리눅스 시스템의 중앙 설정 저장소로, 시스템 전체에 영향을 미치는 각종 설정 파일과 초기화 스크립트가 저장된 곳입니다. 시스템의 올바른 작동과 보안을 유지하기 위해 중요한 디렉터리로, 관리자는 필요한 설정 변경 시 이 디렉터리의 파일을 수정하거나 참조합니다.

 

 

 💬 = 📚(변경가능한설정)

 

 


그래서 /bin이랑 /etc랑 차이점이 뭔데요?

 

  /bin /etc
목적 시스템의 기본 실행 파일(명령어) 저장 시스템의 구성 및 설정 파일 저장
저장 파일 모든 사용자에게 공통적으로 제공되는 필수 명령어실행 파일 시스템 전반의 설정 파일, 서비스 및 데몬 설정, 네트워크 설정 파일

 

 


/var 디렉토리

 

  • 리눅스 및 유닉스 계열 운영 체제에서 가변 데이터(변하는 데이터)를 저장하는 데 사용되는 디렉터리
  • 시스템이 동작하면서 발생하는 로그 파일, 캐시 데이터, 메일 스풀, 프린트 큐, 임시 파일 등 시간에 따라 크기나 내용이 변경되는 파일들을 저장하기 위한 곳.
  • 가변적인 데이터 저장소
시스템 운영 중에 계속 변경되는 데이터를 저장.( 로그 파일, 스풀 파일(메일, 프린터 큐 등), 캐시, 임시 파일 등이 포함)

 

🐈‍⬛가변 데이터(Variable Data): 시간에 따라 변경될 수 있는 데이터를 의미

Log File
(로그 파일) : 로그 파일은 시스템 상태를 모니터링하고, 문제를 진단하거나, 보안을 유지하며, 성능을 분석하기 위해 사용.
🐾컴퓨터 시스템, 애플리케이션, 서버, 네트워크 장치 등이 작동 중에 발생하는 다양한 이벤트, 오류, 사용자 활동 및 기타 중요한 정보를 기록

Spool File(스풀 파일) : 컴퓨터 시스템에서 특정 작업이 처리되기 전까지 데이터를 일시적으로 저장하는 파일
🐾스풀(Spool) :  "Simultaneous Peripheral Operations On-Line"의 약자로, 주변 장치(프린터, 디스크 등)와의 작업을 병렬로 처리하기 위해 데이터를 임시로 저장하는 기술을 의미.

Cache File(캐시 파일) : 컴퓨터 시스템이나 애플리케이션에서 자주 사용되는 데이터나 계산 결과를 임시로 저장하여, 더 빠른 접근 속도와 성능 향상을 위해 사용하는 파일.
  • 시스템의 일관성 및 성능 유지
/var 디렉터리에 데이터가 저장됨으로써, 시스템의 다른 부분(예:/etc, /usr디렉터리)이 불필요하게 수정되는 것을 방지하고, 데이터의 저장 및 관리가 명확.
  • 백업 및 복구에 도움
/var에 저장된 파일들은 주로 시스템 운영에 필요한 가변 데이터이기 때문에, 해당 디렉터리를 정기적으로 백업하면 시스템 복구 시 유용.

 

  • 동적 데이터의 저장소
운영 중에 지속적으로 변경되는 데이터를 저장하여 시스템의 일관성과 안정성을 유지
  • 성능 최적화
로그 파일과 캐시 데이터를 저장함으로써 시스템 및 애플리케이션의 성능을 최적화하고, 불필요한 디스크 쓰기를 줄임.
  • 문제 해결에 도움
시스템 로그 파일들이 /var/log에 저장되므로, 시스템 관리자나 개발자가 문제를 진단하고 해결하는 데 유용한 정보를 제공

 

 

 

 

https://youtu.be/5yYgbkWni2Y?si=kov63lGjnPMkMYcQ

자꾸 /var 볼 때마다 이 노래 생각 남..지금도 듣고 있음..

 

/var 디렉터리는 리눅스 파일 시스템에서 가변 데이터를 저장하는 중요한 위치. 시스템 운영 중에 지속적으로 변경되는 데이터(로그, 캐시, 스풀 파일 등)를 저장하여, 시스템의 일관성을 유지하고 성능을 최적화하며, 문제 해결을 지원하는 데 중요한 역할을 합니다.

 

 

💬 = 🐣(데이터연습생)

 


/home 디렉토리

  • 리눅스 및 유닉스 계열 운영 체제에서 사용자 계정의 개인 파일과 설정을 저장하는 디렉토리
  • 각 사용자는 /home 디렉토리 하위에 자신만의 Home Directory(홈 디렉토리)를 가지고 있으며, 이 홈 디렉토리는 해당 사용자의 개인 파일, 설정, 데이터 등을 저장하는 공간으로 사용.
  • 개인 데이터 저장소
각 사용자의 홈 디렉토리는 개인 문서, 다운로드 파일, 사진, 음악 등 다양한 데이터를 저장할 수 있는 개인 데이터 저장소 역할.
  • 개인 설정 파일 저장소
사용자별 환경 설정 파일(예: .bashrc, .vimrc, .profile 등)이나 애플리케이션 설정 파일(예: .mozilla나 .config 폴더)은 홈 디렉토리에 저장.( 각 사용자는 자신만의 설정과 환경을 유지할 수 있음.)
환경 설정 파일 : 운영 체제나 애플리케이션의 동작 방식을 정의하고 조정하는 설정 정보를 저장하는 파일.

환경 설정 파일의 종류

[ 리눅스/유닉스 셸 설정 파일 ]

~/.bashrc : Bash 셸의 초기화 파일로, 사용자가 터미널을 열 때 실행될 명령어와 셸 환경을 설정
예: alias 설정, 프롬프트 모양 정의, 환경 변수 설정 (export PATH) 등.
~/.bash_profile, ~/.profile : 로그인 셸에서 실행될 설정 파일로, 사용자의 로그인 환경을 설정.
~/.zshrc
: Zsh 셸의 초기화 파일로, Bash와 유사한 역할을 하며, Zsh 셸의 환경을 정의.

[ 애플리케이션 설정 파일(Application Configuration File) ]
: 특정 애플리케이션의 동작 방식, 사용자 환경, 기본 설정을 정의 하는 파일.
~/.vimrc : Vim 편집기의 설정 파일로, 텍스트 편집기의 동작 방식을 사용자 맞춤형으로 정의 (예: 줄 번호 표시, 탭 간격 설정)
~/.gitconfig : Git 버전 관리 시스템의 사용자 환경 설정 파일로, 사용자명, 이메일, 색상, alias 등을 설정.
~/.ssh/config : SSH 클라이언트의 설정 파일로, SSH 접속 시 사용할 기본값(포트, 사용자 이름, 키 파일 경로 등)을 지정.

[ 시스템 전역 설정 파일 ]
/etc/profile : 시스템 전반에 걸친 셸 환경 설정을 정의하며, 모든 사용자에게 적용되는 환경 변수를 설정.
/etc/ssh/sshd_config : SSH 서버의 동작을 제어하는 설정 파일로, 포트 번호, 인증 방식, 로그인 제한 등을 설정.
/etc/fstab : 파일 시스템의 마운트 정보를 설정하는 파일로, 부팅 시 자동으로 마운트할 디스크 파티션을 지정.

[ 데스크탑 환경 설정 파일 ]
~/.config 디렉토리 :
Xfce, GNOME, KDE 등의 데스크탑 환경에서는 사용자별 애플리케이션 설정 파일을 이 디렉토리에 저장.
  • 예: **~/.config/gtk-3.0/settings.ini**는 GTK+ 애플리케이션의 테마와 폰트 등을 설정하는 파일.

  • 보안 및 접근 제어
디렉토리 하위의 각 사용자 홈 디렉토리는 기본적으로 해당 사용자만이 접근할 수 있도록 권한이 설정. 사용자 간의 데이터 보호와 프라이버시가 보장.
  • 사용자 분리 및 관리 용이성
각 사용자에게 독립된 홈 디렉토리를 제공함으로써, 여러 사용자가 한 시스템을 공유하더라도 개인 데이터와 설정을 분리
  • 백업 및 복원의 용이성
1. 사용자 데이터를 백업하거나 복원할 때 유용.
2. 시스템 문제나 재설치 시 /home 디렉토리만 따로 백업하면 사용자 데이터가 안전하게 보존
  • 확장성과 이식성
독립적인 파티션으로 설정할 수 있어, 시스템을 업그레이드하거나 이동할 때 사용자 데이터가 손실되지 않도록 할 수 있음.
  • 보안 관리
각 사용자 홈 디렉토리는 기본적으로 해당 사용자에게만 읽기/쓰기 권한이 설정되어 있어, 데이터의 보안과 개인 정보 보호이 됨.
  • 디스크 용량 관리
사용자 파일이 저장되기 때문에 디스크 사용량이 빠르게 늘어날 수 있음. 시스템 관리자는 디스크 용량을 모니터링하고, 필요 시 오래된 데이터나 불필요한 파일을 정리해야함.
  • 백업
중요한 개인 파일과 설정이 저장되므로, 주기적인 백업이 필요
  • 권한 설정
보안을 위해 각 사용자 홈 디렉토리의 권한을 적절하게 설정하여, 다른 사용자가 함부로 접근할 수 없도록 해야 함.

 

 

/home 디렉토리는 리눅스 시스템에서 사용자의 개인 데이터와 설정을 관리하는 핵심적인 디렉토리. 각 사용자에게 독립적인 공간을 제공하고, 데이터 보안과 관리의 효율성을 높이는 역할을 하며, 시스템 관리자가 이 디렉토리를 적절히 관리하고 백업하는 것이 중요합니다.

 

💬 = 🐈‍⬛

/tmp 디렉토리

  • 리눅스 및 유닉스 계열 운영 체제에서 임시 파일을 저장하는 디렉토리.
  • 일시적인 데이터를 저장하고, 프로그램이나 시스템이 실행되는 동안 필요한 임시 작업 파일을 관리하는 데 사용됨.
  • 임시 파일 저장
애플리케이션이나 시스템 프로세스가 실행되는 동안 생성된 임시 파일을 저장. 이러한 파일은 일반적으로 프로그램이 실행되는 동안만 필요하며, 프로그램이 종료되면 삭제될 수 있음.
  • 프로세스 간 데이터 교환
여러 프로세스가 데이터를 일시적으로 교환하는 데 사용되는 파일을 저장. 예를 들어, IPC(Inter-Process Communication) 메커니즘의 일환으로 사용될 수 있음.

🐈‍⬛IPC(Inter-Process Communication) : 프로세스 간 통신을 의미하며, 여러 개의 프로세스가 서로 데이터를 교환하거나 협력할 수 있도록 하는 메커니즘. IPC는 운영 체제의 핵심 기능 중 하나로, 다중 프로세스 환경에서 프로세스들이 서로 협력하여 작업을 수행할 수 있게 함.
🐾메커니즘 : 특정 목표를 달성하거나 문제를 해결하기 위해 설계된 방법, 과정, 기구 또는 시스템을 의미

  • 시스템 작업 지원
시스템 운영 중 발생하는 일시적인 작업(예: 소프트웨어 설치, 데이터 처리)을 지원하는 파일을 저장.
  • 자동 삭제
/tmp 디렉토리의 파일은 일반적으로 일정 기간이 지나면 자동으로 삭제되거나 시스템 재부팅 시 제거
  • 쓰기 권한
대부분의 사용자 및 애플리케이션이 쓰기 권한을 가지며, 이를 통해 프로그램이 임시 파일을 생성.
  • 보안 및 접근 제어
보안상의 이유로 적절한 권한이 설정. 임시 파일이 다른 사용자나 프로세스에 의해 읽히거나 변경될 수 있기 때문에, 파일 접근 권한이 적절히 관리되어야 함.
  • 파일 시스템의 크기
/tmp 디렉토리는 대개 시스템의 루트 파일 시스템에 위치하지만, 독립된 파티션으로 설정될 수도 있음. (임시 파일이 생성 시 공간 확보)

 

  • 자동 정리
자동으로 정리되도록 설정할 수 있으며, 시스템에 따라 주기적으로 정리하거나 재부팅 시 삭제

 

  • 디스크 공간 모니터링
디스크 사용량을 모니터링하고 필요 시 정리 작업을 수행
  • 보안 조치
/tmp 디렉토리에 저장되는 파일이 보안 취약점을 초래할 수 있으므로, 적절한 접근 권한 설정과 보안 조치를 취하는 것이 중요.

사용 예시까지 있어 버리네,,죽겠어요,,

👾/tmp 사용 예시

  1. 소프트웨어 설치
    • 소프트웨어 설치 과정에서 패키지 파일을 추출하거나 설치 파일을 임시로 저장하는 데 사용됩니다.
  2. 문서 편집 및 임시 작업
    • 문서나 파일을 편집할 때 생성되는 임시 파일이나 버퍼를 저장하는 데 사용됩니다.
  3. 시스템 로그 및 데이터 처리
    • 시스템 작업 중 생성되는 임시 로그 파일이나 데이터 처리 중간 결과를 저장하는 데 사용됩니다.
  4. 웹 브라우저 캐시
    • 웹 브라우저는 다운로드한 웹 페이지와 리소스를 /tmp에 임시로 저장할 수 있습니다.

 

/tmp 디렉토리는 리눅스 및 유닉스 시스템에서 임시 파일을 저장하고 관리하는 중요한 디렉토리. 애플리케이션이나 시스템 프로세스의 일시적인 작업을 지원하고, 디스크 공간을 효율적으로 사용할 수 있도록 돕습니다. 자동 정리 기능과 적절한 보안 조치를 통해 관리해야 하며, 디스크 공간과 보안에 대한 신경을 써야 합니다.

 

 

💬 = 🐚 창업한 임차인

/usr 디렉토리

 

  • 유닉스 계열 운영 체제(Linux, Unix 등)에서 사용자(User) 관련 시스템 파일을 저장하는 디렉토리.
  • 일반 사용자의 개인 데이터가 아닌 애플리케이션, 사용자 명령어, 라이브러리, 헤더 파일, 공통 데이터 등 시스템 운영에 필요한 파일들이 저장.
  • 시스템 프로그램과 파일의 저장
사용자와 관련된 프로그램, 명령어, 애플리케이션 등을 저장.
usr 디렉토리에는 시스템 운영에 필요한 다양한 유틸리티, 도구, 라이브러리, 매뉴얼 등이 포함.
  • 공유 가능한 데이터의 저장소
여러 사용자나 애플리케이션이 공통으로 사용할 수 있는 데이터나 파일을 저장하는 장소로 사용.
(시스템에서 제공하는 기본 텍스트 편집기, 컴파일러, 이미지 뷰어)
  • 애플리케이션과 시스템 파일의 계층화
시스템 파일 구조를 더 잘 조직화하여 애플리케이션 및 파일을 그룹화하고, 시스템 유지 관리를 용이
  • 읽기 전용
1. 대부분의 시스템에서는 /usr 디렉토리가 읽기 전용으로 마운트됨.
2. 시스템 안정성을 높이고, 사용자나 애플리케이션이 중요한 시스템 파일을 임의로 변경하지 않도록 하기 위함.
  • 대용량 데이터
리눅스 시스템에서 가장 큰 디렉토리 중 하나가 될 수 있으며, 대부분의 애플리케이션과 프로그램 파일들이 이곳에 저장.
  • 네트워크 공유 가능
여러 시스템 간에 네트워크를 통해 공유될 수 있음.
예를 들어, 클라이언트-서버 환경에서 /usr를 공유하여 프로그램과 유틸리티를 일관되게 사용할 수 있습니다

 

 

 

🐜/usr 디렉토리의 주요 하위 디렉토리

/usr/bin

 

  1. 표준 사용자 명령어 바이너리가 위치하는 디렉토리.
  2. 대부분의 사용자용 명령어와 실행 가능한 파일이 저장.
    • 예: ls, cp, find, grep, vim 같은 명령어가 위치.

 

/usr/sbin
  1. 시스템 관리자용 명령어가 위치하는 디렉토리.
  2. 주로 시스템 관리와 관련된 유틸리티가 포함.
    • 예: ifconfig, fdisk, shutdown 같은 시스템 관리 명령어들이 위치.

 

/usr/lib
/usr/bin
/usr/sbin

 

  1. 프로그램이 사용할 수 있는 라이브러리 파일이 저장되는 디렉토리
  2. 특히 /usr/bin, /usr/sbin의 실행 파일들이 사용하는 라이브러리가 포함.
  3. 아키텍처에 따라 특정한 하위 디렉토리가 추가

 

 

/usr/local
  1. 로컬 시스템에 설치된 프로그램과 파일을 저장하는 디렉토리.
  2. 사용자나 관리자가 직접 설치한 소프트웨어는 주로 이 위치에 저장.
  • 예: 직접 컴파일한 프로그램, 별도의 패키지 매니저를 통해 설치한 소프트웨어 등이 위치.

 

 

/usr/share
  1. 플랫폼에 독립적인, 즉 아키텍처에 무관한 공용 파일이 저장되는 디렉토리
  2. 애플리케이션의 매뉴얼, 아이콘, 설정 파일 등이 포함
  • 예: 지역화 파일(다국어 지원), 매뉴얼 페이지, 특정 애플리케이션의 문서 파일 등이 있음.

 

/usr/include
  1. C/C++와 같은 프로그래밍 언어의 헤더 파일이 저장되는 디렉토리.
  2. 일반적으로 시스템 라이브러리와 관련된 헤더 파일들이 위치.
  • 예: stdio.h, stdlib.h와 같은 C 표준 라이브러리 헤더 파일이 포함

 

/usr/src

 

  1. 커널 소스 코드나 다양한 패키지의 소스 코드가 저장되는 디렉토리
  • 예: 리눅스 커널 소스 코드를 다운로드하여 컴파일할 때 이 디렉토리를 사용.

 

/usr/share/man

 

  1. 시스템 매뉴얼 페이지가 저장되는 디렉토리
  2. 각 명령어와 프로그램의 도움말 파일이 포함.
  • 예: man ls 명령어를 실행할 때 사용하는 매뉴얼 파일이 /usr/share/man/man1/ls.1.gz에 위치합니다

 

/usr 디렉토리는 리눅스 및 유닉스 시스템에서 사용자 애플리케이션, 유틸리티, 라이브러리, 공유 데이터 등을 저장하는 곳으로, 시스템 운영에 필수적인 역할. 다양한 하위 디렉토리를 통해 명령어, 라이브러리, 문서, 설정 파일 등이 구조화되어 있으며, 대부분의 사용자용 애플리케이션과 시스템 유틸리티가 여기에 위치합니다.

 

💬 = 🏢회사

 

 

 

나보다 글 잘 쓴 사람 나와봐 (진짜 나오지 말고 수줍게 인사해야하니까)

드디어 문제 1 clear🥕