Linux 시스템에서의 파일 개념
일반적으로 Linux는 모든 입출력은 문자를 기반으로 수행됩니다. 운영 체제에 관한 한 모든 것이 파일입니다. 즉, 장치와 사용자는 파일 시스템의 파일로 간주됩니다. 예를 들어 비디오 카드, 사운드 카드, 병렬 포트, 하드 드라이브 등 모든 장치는 파일로 취급됩니다. 이 개념은 운영 체제가 파일 작업 방법을 알고 있기 때문에 많은 작업을 단순화합니다.
Linux는 파일과 같은 모든 것을 처리하기 때문에 Windows 운영 체제에서 사용하는 것보다 많은 파일 형식이 있습니다. Windows 환경에는 디렉토리 및 일반 파일 두 가지 일반적인 유형의 파일 만 있습니다. 디렉토리는 다른 파일 또는 다른 디렉토리에 대한 포인터를 보유하는 특별한 유형의 파일입니다. Windows에서 일반 파일이라고하는 다른 유형의 파일은 디렉토리가 아닌 모든 파일입니다. 예를 들어 텍스트 파일, 실행 파일, 이미지, 바이너리 등은 모두 일반 파일입니다.
Linux는 장치를 포함하여 모든 것을 파일로 취급하기 때문에 여러 파일이 서로 다른 형식으로 입력을 허용하고 출력 할 수있는 방법이 필요합니다. 그래서 우리는 리눅스 시스템에 추가적인 파일 형식을 가지고 있습니다. 특수 파일이라고합니다 .
특수 파일
Linux의 첫 번째 특수 파일은 링크 입니다. 링크가 다른 항목이나 파일 시스템의 다른 부분을 가리 킵니다. 링크는 하드 링크 또 Symbolic 링크 (sym 링크) 일 수 있습니다. 하드 링크는 파일 시스템에 대한 정보를 가리 킵니다. 기본적으로 특정 데이터를 가리키는 중복 항목입니다. 또한 파일 시스템의 동일한 데이터를 가리키는 여러 개의 하드 링크를 가질 수 있습니다. 아래 그림에서는 파일 시스템의 일부 파일을 가리키는 하드 링크가 하나 있습니다. 또한 동일한 파일을 가리키는 또 다른 하드 링크를 추가했습니다.
Hard link
동일한 데이터를 가리키는 하드 링크는 모두 똑같습니다. 하나의 하드 링크를 제거하면 다른 하드 링크도 원래만큼 유효합니다. 파일 시스템의 모든 하드 링크가 삭제 될 때까지 파일이 삭제되지 않습니다. sym 링크와 비교할 때 하드 링크는 일반적으로 사용되는 링크가 아닙니다. 사실, 일반적으로 리눅스 시스템에서 sym 링크를 사용할 것입니다. Sym 링크는 파일 시스템의 다른 항목을 가리키는 파일 시스템의 항목이며 파일 시스템의 일부 파일을 가리 킵니다.
Sym link
sym 링크를 사용하면 다른 볼륨이나 다른 파일 시스템에있는 데이터를 가리킬 수 있습니다. 심볼릭 링크는 Windows의 바로 가기와 유사합니다.
또 다른 특별한 유형의 파일은 문자 파일입니다. 문자 파일은 한 번에 한 문자 씩 입력 할 수 있습니다 (한 번에 한 바이트 씩). 문자 파일이 가리키는 장치의 예로는 키보드, 비디오 카드, 사운드 카드, 직렬 포트 등이 있습니다.
다른 유형의 파일은 블록 파일입니다. 블록 파일은 한 번에 하나의 블록 (시간의 바이트 그룹)을 입력 할 수있는 장치를 가리 킵니다. 블록 장치의 예로는 하드 드라이브, CD-ROM 드라이브, DVD 드라이브 등과 같은 저장 장치가 있습니다.
또 다른 유형의 파일은 파이프 이며 종종 명명 된 파이프라고합니다. 파이프는 응용 프로그램간에 정보를 보낼 수있는 파일입니다. 각 응용 프로그램은 파이프의 한쪽 끝을 연결하고 앞뒤로 정보를 보냅니다.
Linux 시스템의 또 다른 유형의 파일은 소켓 입니다. 소켓은 파이프와 유사하지만 이번에는 네트워크를 통한 통신에 대해 이야기합니다.
Linux에서 파일을 작업 할 때 모든 파일 이름은 대소 문자를 구분한다는 점을 기억하십시오.
파일 시스템
Linux 운영 체제의 파일 시스템은 Windows OS와 비교할 때 약간 다르게 작동합니다. 우리가 알아야 할 첫 번째 일은 루트 디렉토리가 하나뿐이라는 것입니다. Windows 시스템에서 모든 볼륨에는 고유 한 루트 디렉토리가 있습니다. 예를 들어 Windows 시스템에 두 개의 파티션이 있다고 가정 해 봅시다. 이 경우 모든 파티션에 하나씩 두 개의 루트 폴더가 생기며 백 슬래시 (\)를 표시합니다. 따라서 C : 드라이브가 있으면 C : \ root 폴더가 있고 D : 드라이브가 있으면 D : \ root 폴더가 생깁니다. Linux 시스템에서는 / 문자를 사용하여 루트 디렉토리를 나타냅니다.
Linux 시스템에서는 Unified Directory Hierarchy를 사용합니다. 즉, 하나의 루트 디렉토리가 있습니다. 그런 다음 다른 디렉토리가 그 하나의 루트 디렉토리 안에 있습니다. 여러 개의 볼륨, 파티션 또는 DVD-ROM 드라이브가있는 경우이를 통합 된 디렉토리 구조의 일부 폴더에 마운트하기 만하면됩니다.
파일 시스템 계층 구조 표준
이 모든 것은 파일 시스템 계층 표준 또는 FHS에서 지원됩니다. 이 표준은 Linux 파일 시스템의 위치를 지정합니다. 이 기사를 작성할 당시 FHS의 최신 버전은 2004 년 1 월 29 일에 발표 된 2.3 버전입니다. 새 버전을 확인하려 면 http://www.pathname.com/fhs/ 를 방문하십시오 .
리눅스 디렉토리 구조
FHS는 여러 가지를 정의합니다. 첫째, 루트 디렉토리에 " bin ", " sbin "및 " lib "디렉토리가 있음을 정의합니다. " bin "은 실행 파일을 대상으로하므로 바이너리와 응용 프로그램 또는 응용 프로그램 링크가 여기에 있습니다. 응용 프로그램 자체는 파일 시스템의 다른 폴더 안에있을 수 있지만 bin에서 실행됩니다. 사용자는 일반적으로 항상 / bin에 액세스 할 수 있으므로 컴퓨터의 모든 사용자가 해당 폴더에있는 응용 프로그램에 액세스 할 수 있습니다.
" sbin "또는 system bin은 시스템 관리 응용 프로그램 용입니다. 일반 사용자는 일반적으로 / sbin 경로에 액세스 할 수 없습니다. 그러나 루트 사용자는 해당 경로에 액세스 할 수 있습니다.
" lib "또는 libraries는 / bin 또는 / sbin 또는 다른 위치에서 실행될 때 바이너리에 의해 링크되는 코드 용입니다. 이들은 공유 프로그램 라이브러리입니다. Windows 환경에서 이러한 라이브러리는 DLL입니다. lib 외에도 라이브러리 외에도 응용 프로그램 자체가있을 수 있습니다. 우리는 그들을 lib 디렉토리 안에 별도의 디렉토리에 설치 한 다음 bin 또는 sbin 폴더 안에 링크 할 수 있습니다. "lib"내부의 한 중요한 디렉토리는 커널 자체에 대한 링크 가능한 라이브러리를 포함하는 "modules"디렉토리입니다. / bin, / sbin 및 / lib에는 일반적으로 운영 체제 자체의 항목이 포함됩니다. 이러한 것들은 시스템의 모든 사람들이 사용할 핵심 유틸리티입니다.
또 다른 중요한 디렉토리는 사용자 파일을위한 것이 아닌 " usr "입니다. 대신 프로그램 및 응용 프로그램을 대상으로하지만 일반 사용자가 사용하는 프로그램 종류를 대상으로합니다. "usr"내부에는 "bin", "sbin"및 "lib"폴더도 있습니다. "usr"폴더 안에있는 다른 폴더는 "local"폴더입니다. "local"폴더 안에는 "bin", "sbin"및 "lib"폴더도 있습니다. "bin", "sbin"및 "lib"폴더는 모든 위치에서 동일한 기능을하지만 폴더의 위치에 따라 파일 및 응용 프로그램의 유형이 저장되는 방식에 따라 다릅니다. / bin, / sbin 및 / lib 폴더는 핵심 시스템 유틸리티를 포함합니다. / usr / bin, / usr / sbin, / usr / lib 디렉토리는 최종 사용자 응용 프로그램 및 바이너리 용입니다. / usr 안에있는 "local"폴더는 네트워크에서 사용할 수 없도록되어 있습니다. 아시다시피, 우리는 네트워크를 통해 모든 폴더를 마운트 할 수 있습니다. "local"을 사용하여 우리가 / usr / local에 설치 한 응용 프로그램을 nework에서 사용할 수 없도록합니다.
언급해야 할 또 다른 폴더는 " opt "라고 불리는데, 이는 특정 리눅스 배포판에 압축되어 있지 않은 선택적 소프트웨어를위한 것입니다. "opt"폴더는 또한 로컬에서 사용하기위한 것입니다. 일부 구현에는 모든 사용자가 액세스 할 수있는 문서를 보관할 / usr / doc 하위 디렉토리 (또는 / usr / share / doc 하위 디렉토리)가 포함될 수도 있습니다.
우리가 일반적으로 볼 수있는 다른 디렉토리는 " root "와 " home "입니다. "root"및 "home"디렉토리는 사용자의 홈 디렉토리입니다. / root는 루트 관리 사용자의 디렉토리입니다. / root와 시스템의 루트 (/)를 혼동하지 마십시오. "home"디렉토리 안에는 모든 사용자를위한 모든 홈 폴더가 있습니다. 기본적으로 사용자는 자신의 홈 디렉토리에 대한 읽기 및 쓰기 액세스 만 할 수 있습니다.
또 다른 폴더는 운영 체제를 부팅하는 데 필요한 모든 것이 들어있는 " boot "디렉토리입니다. 여기에는 커널 및 부트 로더 파일이 포함됩니다.
부팅하는 동안 필요한 다른 폴더는 " initrd "입니다. 초기 RAM 드라이브 이미지를 보유합니다.
다른 디렉토리는 " media "와 " mnt "입니다. "미디어"와 "mnt"는 CD-ROM, DVD-ROM, 플로피 등과 같은 이동식 미디어 용입니다. DVD를 넣으면 DVD가 폴더 형태의 "미디어"폴더 안에 마운트됩니다. 그렇게하면 간단히 / media / dvdrom /을 탐색 할 수 있으며 DVD의 콘텐츠에 액세스 할 수 있습니다. 원래 이것은 "mnt"디렉토리 안에 있도록 고안되었지만 버전 2.3에서 "media"로 변경되었습니다. "mnt"는 여전히 거기에 있으며 다른 볼륨이나 다른 임시 볼륨에 마운트 포인트를 저장하는 데 사용됩니다.
우리가 알아야 할 또 다른 디렉토리는 " srv "디렉토리입니다. 이 폴더에는 예를 들어 FTP 서버 또는 웹 서버 등과 관련된 정보가 포함될 수 있습니다.
또한 가변 데이터 용으로 설계된 " var "폴더가 있으며 데이터는 많이 변경됩니다. "var"안에는 로그, 캐시, 메일, 스풀 등의 폴더가 있습니다. 원래 ftp와 www는 "var"폴더 안에있었습니다.
또 다른 중요한 디렉토리는 임시 파일을 대상으로하는 " tmp "입니다. 운영 체제 및 응용 프로그램은 해당 폴더에 임시 파일을 작성합니다. 일반적으로 일부 응용 프로그램에서는 현재 사용하지 않는 폴더에서 파일을 삭제하는 것이 안전합니다.
다른 폴더는 "etc"입니다. 이것은 시스템에 특정한 설정 파일을 가지고 있습니다.
우리는 또한 파일 시스템에 대한 몇 가지 특별한 디렉토리를 언급해야합니다. 이것들은 우리가 지금까지 이야기했던 것과는 다릅니다. 첫 번째 파일은 모든 장치 파일과 블록 파일, 문자 파일 등과 같은 특수 파일을 보유하는 " dev "디렉토리입니다. 실제보다 가상의 두 개의 폴더가 더 있습니다. 그들은 실제로 존재하지 않고 실제 파일이 아닙니다. 그것들은 동적으로 생성되어 시스템에 무슨 일이 일어나는지보고합니다. 그 두 폴더는 " proc "와 " sys "입니다. 알다시피, 리눅스는 모든 것을 파일로 본다. 이것은 같은 방식으로 작동합니다. "proc"는 실시간 시스템 상태 및 프로세스 상태 정보를 포함합니다. 여기에는 CPU 및 메모리 사용에 대한 정보가 포함됩니다. 이 폴더에는 실제 시스템 상태가 포함되어 있으므로 해당 폴더 내의 파일을 편집 할 때는 매우주의해야합니다. 우리가하는 일을 모른다면 그 폴더 안에있는 파일을 편집해서는 안됩니다.
"sys"디렉토리는 커널 2.6과 함께 추가되었으며보다 구체적인 시스템 정보를 보여줍니다. "proc"폴더에는 프로세스 특정 정보가 들어 있고 "sys"에는 특정 시스템 정보가 들어 있습니다. 이 두 폴더는 모두 가상이며 실제 세계에는 실제로 존재하지 않습니다.
Linux는 파일 시스템을 통일했습니다. 그것은 하나의 루트 디렉토리를 가지며 그 안에 모든 것이 존재합니다. 통합 파일 시스템 내부의 빈 디렉터에 볼륨을 마운트 할 수 있습니다. 파일 시스템에는 특정 구조가 있습니다. 그 구조는 FHS 또는 Filesystem Hierarchy Standard에 의해 결정됩니다. 리눅스는 모든 것을 파일로 본다. 파일 시스템은 대소 문자를 구분합니다.
'정리 > 시스템' 카테고리의 다른 글
Linux configuration file (0) | 2017.10.06 |
---|---|
MBR vs GPT (0) | 2017.10.06 |
BIOS 대 UEFI (0) | 2017.10.06 |
오픈소스SW 라이선스 (0) | 2017.10.06 |
리눅스의 개요 (2) | 2017.10.05 |
댓글