특수 파일이란 무엇입니까?

컴퓨터 운영 체제에서 특수 파일 은 파일 시스템에 저장 될 수있는 한 유형의 파일입니다. 특수 파일은 때때로 장치 파일 이라고도 합니다 .

특수 파일의 목적은 장치를 파일 시스템의 파일로 표시하는 것입니다. 특수 파일은 파일 I / O 용 도구를 사용하여 장치에 액세스 할 수 있기 때문에 하드웨어 장치 (및 커널이 만들고 사용하는 가상 장치)에 대한 범용 인터페이스를 제공합니다.

특수 파일에서 데이터가 빨간색이거나 특수 파일에 쓰여지면 작업이 즉시 수행되며 일반적인 파일 시스템 규칙의 적용을받지 않습니다.

리눅스에는 두 종류의 특수 파일이 있습니다 : 블록 특수 파일문자 특수 파일 .

블록 특수 파일 은 블록 장치에 대한 직접 인터페이스 역할을합니다. 블록 디바이스는 블록 단위로 데이터 입출력을 수행하는 디바이스입니다.

블록 특수 파일의 예 :

  • / dev / sd xn - 물리적 저장 장치의 마운트 된 파티션. 문자 x 는 물리적 장치를 나타내며 번호 n 은 해당 장치의 파티션을 나타냅니다. 예를 들어, / dev / sda1 은 일반적으로 첫 번째 물리적 저장 장치의 첫 번째 파티션입니다.
  • / dev / loop n - 루프 장치. 이것은 파일 시스템의 파일을 블록 장치로 사용할 수있는 특별한 장치입니다. 파일은 자체 파일 시스템 전체를 포함 할 수 있으며 실제 저장 장치에 마운트 된 파티션 인 것처럼 액세스 할 수 있습니다. 예를 들어, ISO 디스크 이미지 파일은 루프 장치로 마운트 될 수 있습니다.

시스템에 얼마나 큰 블록이 있는지 알고 싶다면 root로 " blockdev --getbsz device "를 실행하십시오 :

 sudo blockdev --getbsz / dev / sda1 
 4096 

이 예제에서 블록 크기는 4096 바이트 (4 킬로바이트)입니다.

문자 특수 파일

문자 특수 파일 은 블록 장치와 비슷하지만 한 번에 한 문자 (8 비트 또는 1 바이트)로 기록됩니다.

문자 특수 파일의 예 :

  • / dev / stdin (표준 입력.)
  • / dev / stdout (표준 출력).
  • / dev / stderr (표준 오류).
  • / dev / random (PRNG : 추가 엔트로피를 얻기 위해 값을 반환하는 것을 지연시킬 수 있음)
  • / dev / urandom (필수 엔트로피에 관계없이 항상 즉시 값을 반환하는 PRNG)
  • / dev / null (null 디바이스)이 파일로부터의 읽기는 항상 널 바이트를 가져 오며, 이 파일에 대한 쓰기는 성공적으로 수행되지 않습니다.

Linux 파일 유형

Linux 커널에서 파일 유형은 sys / stat.h 헤더 파일에 선언되어 있습니다. 각 Linux 파일 유형의 유형 이름, 기호 이름 및 비트 마스크는 아래에 나열되어 있습니다.

파일이 특별한 지 어떻게 알 수 있습니까?

블록 스페셜 테스트

bash에서 " test -b file "명령은 파일 이 특별 블록 인 경우 종료 상태를 0으로 반환하고 파일 이 다른 유형이거나 존재하지 않는 경우 1을 반환합니다.

 테스트 -b / dev / sda1; echo $? # 블록 특별 검사, 시험 종료 상태 반향 
 0 
 테스트 -b / dev / null; echo $? # 특수 문자 파일은 특수 문자 블록이 아닙니다. 
 1 

특수 문자 테스트

파일이 특수 문자인지 확인하려면 " test -c file "을 사용하십시오.

 test -c / dev / null; echo $? 
 0 

통계 사용하기

stat를 사용 하여 파일의 유형을 확인할 수도 있습니다.

 통계 / dev / sda1 
 파일 : / dev / sda1 크기 : 0 블록 : 0 IO 블록 : 4096 블록 특수 파일 장치 : 6h / 6d Inode : 7998 링크 : 1 장치 유형 : 8, 1 액세스 : (0660 / brw-rw ----) Uid : (0 / root) Gid : (6 / 디스크) 액세스 : 2018-07-08 06 : 41 : 25.540000000 -0400 수정 : 2018-07-08 06 : 41 : 25.540000000 -0400 변경 : 2018-07-08 06 : 41 : 25.540000000 -0400 출생 : - 
 stat / dev / random 
 파일 : / dev / random 크기 : 0 블록 : 0 IO 블록 : 4096 문자 특수 파일 장치 : 6h / 6d Inode : 6518 링크 : 1 장치 유형 : 1, 8 액세스 : (0666 / crw-rw-rw-) Uid : (0 / root) Gid : (0 / root) 액세스 : 2018-07-08 06 : 41 : 19.676000000 -0400 수정 : 2018-07-08 06 : 41 : 19.676000000 -0400 변경 : 2018-07-08 06:41 : 19.676000000 -0400 출생 : - 

아이 노드, 운영 체제 용어, 표준 입력 (표준 입력), 표준 출력 (표준 출력)