파일 분류 권한의 이해
파일 분류
리눅스 운영체제는 모든 것을 파일로 인식하고 처리함
하드 디스크, 플로피, 프린터 등 모든 자원을 파일로서 취급함
디렉터리도 마찬가지로 파일로 인식하고 처리함
파일의 종류
d | directory |
- | file |
l (소문자 L) | soft (symbolic) link |
c | character device |
b | block device |
s | socket |
p | named pipe --> 프로세스 간 통신, 파이프의 한 종류 |
file
명령어 | 설명 |
$file /bin/ls | ELF |
$file /etc | Directory |
$file /dev/tty | char |
$file /dev/sda | block |
$file /etc/bash.bashrc | 일반 파일 |
$ll /dev/log | socket |
$file /dev/log | symbolic link |
$mkfifo aa | named pipe 만들기 (fifo --> first in first out : 선입선출) |
$file aa | named pipe |
$find /etc/http -type f -exec ls -al {} \; | file 타입 찾아서 해당 파일의 상세정보 출력 |
$find /etc/http -type s -exec ls -al {} \; | socket 타입 찾아서 해당 파일의 상세정보 출력 |
$find /etc/http -type p -exec ls -al {} \; | pipe 타입 찾아서 해당 파일의 상세정보 출력 |
ㄴ 실습
~/d3$ find /run -type f -exec ls -AlF {} \; 2>/dev/null --> file : 파일
~/d3$ find /run -type p -exec ls -AlF {} \; 2>/dev/null --> pipe : 프로세스가 통신할 때,,
~/d3$ find /run -type s -exec ls -AlF {} \; 2>/dev/null --> socket : 소켓
확장자 종류
.a object module library
.c --> c 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자
.C .CC .CXX .C++ --> 모두 C++ 프로그래밍 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자
.i 전처리 된 C언어 source
.ii 전처리 된 C++ source
.m objective c
.mm objective c++
.o object
.s AS --> 어셈블리어 소스파일
.S 전처리가 필요한 어셈블리 소스 파일
확장자 | 설명 |
.a | object module library |
.c | c 언어로 작성된 소스 코드 파일 |
.C .CC .CXX .C++ | 모두 C++ 프로그래밍 언어로 작성된 소스 코드 파일을 나타내는 파일 확장자 |
.i | 전처리 된 C언어 source |
.ii | 전처리 된 C++ source |
.m | objective c |
.mm | objective c++ |
.o | object |
.s | 어셈블리어 소스파일 |
.S | 전처리가 필요한 어셈블리 소스 파일 |
링크 파일
파일 복사와 다른 개념
복사는 I-node 가 다르고 하드디스크 용량을 차지함
링크는 하드디스크 용량을 차지하지 않음 --> 연결만 해주는 개념
링크 파일 | 설명 |
hard link | I-node 가 같음 공유의 개념 C++ 에서 reference 임 --> 하나의 파일에 별칭(alias)을 부여하는 것과 같음 |
soft link | 원본파일에 대해 위치정보만 가짐 파일 크기가 클 이유가 없음 바로가기 아이콘을 생각하면 됨 symbolic link 라고도 함 |
I-node | I-node 내에는 파일 소유권, 허가권, 타임스탬프(마지막 수정, 접근) 파일 종류 등의 정보가 저장되어 있음 사용자는 파일명으로 파일들을 구분하지만, 리눅스는 수많은 i-node들로 이루어져있으며, 시스템 내부적으로는 i-node로서 관리되고 있음 시스템이 부팅되면서 자동으로 체크하여 필요한 부분은 복구한 다음 부팅하게 되는 것임 남아있는 I-node 보기 -> df -i |
복사와 링크개념 이해하기
~$mkdir bbb
~$cd bbb
~$touch aa
~$cal > bb
~$cp aa cpaa
~$cp bb cpbb
~$ll -i
ln aa lnaa --> hard link 생성
~$ln aa lnaa2 --> hard link 생성
~$ln lnaa lnaa3 --> hard link 생성
~$ll -i
ㄴ 하드링크 수 늘어남 --> aa, lnaa, lnaa2, lnaa3 는 hard link 로 연결됨
~$ln -s aa saa --> symbolic link 생성
~$ln -s ss saa2 --> symbolic link 생성
~$ll -i
ㄴ symbolic link 생성
~$cp /bin/date sdate
~$ln -s /bin/date d20 --> symbolic link 생성
~$ll -i
ㄴ 디렉터리를 symbolic link 로 연결
~$ln -s /etc setc
~$ls -i
ㄴ 디렉터리를 symbolic link 로 연결
~$unlink lnaa
~$unlink saa
~$ll -i
ㄴ aa, lnaa, lnaa2, lnaa3 는 hard link로 연결되어 있었으므로 lnaa 를 unlink 할 경우 각각 하드링크 수 줄어듦
복사와 하드링크, 심볼릭 링크 이해 <그림>
'네이버클라우드 > Linux' 카테고리의 다른 글
Linux 4일차 (2023-04-27) Linux System 관리 - 리눅스 설치(Ubuntu Linux) (2) | 2023.04.27 |
---|---|
Linux 3일차 (2023-04-26) Linux System 관리 - 리눅스 설치(Rocky Linux) (2) | 2023.04.26 |
Linux 3일차 (2023-04-26) Linux 기초 명령어 -다양한 명령어, 강력한 CLI (0) | 2023.04.26 |
Linux 2일차 (2023-04-25) (4) | 2023.04.26 |
Linux 1일차 (2023-04-24) (0) | 2023.04.24 |