Unix/Linux 운영 체제의 표준 및/또는 공통 디렉토리

Unix/Linux 운영 체제의 표준 및/또는 공통 디렉토리

Windows 세계에서는 대부분의 폴더 디렉터리 이름이 매우 직관적이라고 생각합니다.

  • \Program Files프로그램에서 사용하는 파일이 포함되어 있습니다(놀랐습니다!)

  • \Program Files (x86)64비트 운영 체제의 32비트 프로그램에서 사용되는 파일이 포함되어 있습니다.

  • \UsersDocuments and Settings사용자가 포함된 (이전의 ) 파일, 즉 문서 및 설정

    • \Users\USER\Application Data애플리케이션별 데이터가 포함되어 있습니다.

    • \Users\USER\Documents사용자 소유의 문서가 포함되어 있습니다.

  • \WindowsWindows 자체 실행에 속하는 파일이 포함되어 있습니다.

    • \Windows\Fonts글꼴 파일 저장(놀랐어요!)

    • \Windows\Temp전역 임시 디렉터리입니다.

등. 이 폴더들의 목적을 알지 못하더라도 이름만 보면 정확하게 짐작할 수 있습니다.

이제 Linux를 자세히 살펴보고 있는데 파일 시스템을 찾는 방법에 대해 매우 혼란스러워졌습니다.

예를 들어:

  • /bin바이너리 파일이 포함되어 있습니다. 하지만 /sbin,,,, 제가 모르는 것들이 더 /usr/bin있을 수도 있습니다. /usr/sbin어느 게 어느 건지? ? 그들 사이의 차이점은 무엇입니까? 바이너리를 만들어 시스템 전체에 저장하려면 어디에 저장해야 합니까?

  • /media외부 미디어 파일 시스템을 포함합니다. 그러나 그것은 또한 사실이다 /mnt. 현재 내 시스템에는 아무것도 포함되어 있지 않은 것 같습니다 /dev. 차이점은 무엇입니까? 내 하드 드라이브의 다른 파티션(예: Windows C:및 Windows) D:은 어디에 있습니까 ?

  • /home사용자 파일 및 설정이 포함되어 있습니다. 이는 직관적이지만 다음으로 무엇을 논의해야 할까요 /usr? /root사용자가 파일과 설정을 소유하더라도 여전히 독립적인 이유는 무엇입니까?

  • /libDLL과 같은 공유 라이브러리가 포함되어 있습니다. 그러나 그것은 또한 사실이다 /usr/lib. 차이점은 무엇입니까?

  • 무엇 /etc? 그것은 정말로 "기다려라"를 의미하는가, 아니면 다른 것을 의미하는가? 글로벌 또는 로컬 중 어떤 종류의 파일이 들어가야 합니까? 어디에 넣어야 할지 아무도 모르는 포괄적인 것입니까, 아니면 특정한 사용 사례가 있습니까?

  • /opt, , 그리고 는 /proc무엇입니까 /var? 그것들은 무엇을 나타내고 무엇을 위해 사용됩니까? Windows*에서는 이와 같은 것을 본 적이 없으며 그 목적이 무엇인지 모르겠습니다.

알아둘 가치가 있는 다른 표준 장소가 생각나는 경우 질문에 자유롭게 추가해 주세요. 저와 같이 *nix 시스템에 이제 막 익숙해지기 시작한 사람들에게 좋은 참고 자료가 되기를 바랍니다.

*알았어, 그건 거짓말이야. WinObj에서 비슷한 것을 본 적이 있지만 자주는 아닌 것 같습니다. 그러나 나는 이것이 Linux에서 어떻게 작동하는지 아직도 모릅니다.

답변1

Linux 배포판은 FHS를 사용합니다.http://www.pathname.com/fhs/pub/fhs-2.3.html

당신은 또한 그것을 시도할 수 있습니다 man hier.

귀하의 질문에 대한 답변을 즉시 요약하려고 노력하겠습니다. 하지만 FHS 전체 내용을 읽어 보시기를 적극 권장합니다.

  • 수퍼유저가 아닌 시스템 바이너리의 경우 /bin
  • /sbin: 수퍼유저(루트) 시스템 바이너리용
  • 중요하지 않은 공유 비수퍼유저 또는 수퍼유저 바이너리의 경우 각각 /usr/bin 및 /usr/sbin
  • /mnt는 임시로 파티션을 마운트하는 데 사용됩니다.
  • /media는 여러 개의 이동식 미디어를 한 번에 마운트하는 데 사용됩니다.
  • /dev에는 시스템 장치 파일이 들어 있습니다. :)
  • /usr 폴더와 그 하위 폴더는 다른 시스템과 공유될 수 있으므로 한 위치에 설치된 동일한 프로그램/파일에 액세스할 수 있습니다. /usr은 일반적으로 별도의 파일 시스템에 상주하므로 시스템을 온라인으로 전환하는 데 필요한 바이너리를 포함하지 않습니다.
  • 별도의 파티션/하드 드라이브/서버에 있을 수 있는 다른 디렉터리를 마운트하지 않고 시스템을 온라인으로 전환해야 할 수 있으므로 /root는 별개입니다.
  • 예, /etc는 "etc"를 나타냅니다. 로컬 시스템의 구성 파일이 여기에 저장됩니다.
  • /opt는 다운로드/컴파일된 프로그램을 설치할 수 있는 곳입니다. 이렇게 하면 파일을 시스템의 나머지 부분과 분리하고 모든 파일을 한 곳에 보관할 수 있습니다.
  • /proc에는 커널 및 실행 중인 프로세스에 대한 정보가 포함되어 있습니다.
  • /var에는 로그, 이메일, 웹페이지 등과 같은 가변 크기의 파일이 포함되어 있습니다.

시스템에 액세스하려면 일반적으로 시스템에서 가능한 가장 큰 디렉토리 중 일부인 /var, /opt, /usr, /home이 필요하지 않습니다.

내가 가장 좋아하는 디렉토리 중 하나는 /srv이지만 일부 사람들은 이를 사용하지 않습니다. http/ftp/samba와 같은 서비스를 통해 호스팅되는 데이터에 대해 작동합니다. /var가 이 용도로 자주 사용되는 것을 보았지만 실제 목적은 아닙니다.

답변2

나는 그들이 무엇을 의미하는지 대답하지 않을 것입니다(다른 사람들은 대답했습니다). 그러나 몇 가지 역사적 배경을 제공할 것입니다.

첫째, UNIX는 종이 테이프와 메인프레임 300보드 하드 코딩 터미널 시대로 거슬러 올라가며 거의 40년의 역사를 갖고 있다는 점을 기억하십시오(Windows XP 시스템은 거의 10년 전입니다). 타이핑 속도가 느리고 타이핑 효율성의 필요성이 다른 많은 고려 사항보다 우선합니다. 이것이 기본 명령이 매우 짧은 이유입니다(예: "ls", "cat", "cc", "dd" 등). 디렉토리 구조도 마찬가지입니다. 명령이 3~4자를 초과하면 이름이 너무 길다는 생각입니다.

대부분의 명령은 /bin에 있고 모든 장치 파일은 /dev에 있으므로 /usr 디렉토리에는 초기에 사용자의 홈 디렉토리가 포함됩니다. 나중에는 부팅 시간을 단축하기 위해 기본 드라이브(루트 파일 시스템, "/")를 더 작게 만들 수 있다고 생각했습니다. 따라서 /usr/bin, /usr/include 및 /usr/lib와 같은 다른 구조가 있습니다. 여기서 /usr은 별도의 "드라이브"입니다. 훨씬 후에는 사용자의 홈 디렉토리가 다른 드라이브인 /home에 있다고 믿어졌습니다. 그 이후에 /var(variable/changeable의 약어)가 나왔습니다. /etc 디렉토리는 모든 시스템 구성 파일의 포괄적인 위치이기 때문에 실제로 "기다림"을 의미합니다. /mnt는 드라이브(일반적으로 백업 드라이브)에 액세스하기 위한 임시 위치로 사용됩니다. /opt, /proc 및 /media와 같은 디렉토리는 훨씬 나중에 제공됩니다.

/usr/local 및 /net과 같은 많은 항목이 생략되어 있지만 이는 이러한 이름이 "덜 직관적"인 이유를 간략하게 설명합니다.

답변3

여기서 이미 언급했듯이 Linux 배포판은 대부분 FHS를 사용합니다.여기특히 Windows 사용자를 위한 튜토리얼 형식의 개요입니다.

Windows 디렉터리에 유의하세요.~인 것 같다직관적이고 피상적입니다. 하지만 프로그램 설정은 *.ini프로그램 폴더, Documents and Settings\User( \Application Data또는 \Local Settings\Application Data) 또는 악명 높은 레지스트리의 파일로서 어디에 속합니까? 마이크로소프트조차도 아무도 모릅니다. 그래서 우리는 계속할 수 있습니다.

관련 정보