/ dev / null 파일의 크기가 실제로 고정되어 있습니까?


23

나는 그것이 /dev/null파일이 아니라 디렉토리라는 것을 알았습니다 .

실제 파일 크기가 있는지 궁금합니다.

답변:


35

/dev/null실제로 파일이 아닙니다. 그것은 A의 문자 장치 !

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null

c권한 문자열 ( crw-rw-rw-) 의 첫 글자 가 이것을 나타냅니다. 일반 파일의 경우 -대신 사용됩니다.

따라서 쉬운 말로 : /dev/null파일이 아니라 파일 시스템 의이 경로에 매핑 된 가상 장치입니다. 이는 블랙홀과 같은 데이터를 삼키고 소멸시키는 유일한 목적을 가지고 있습니다.
입력으로도 사용할 수 있으며 빈 파일 (크기 0)처럼 작동하고 즉시 EOF (파일 끝)를 반환합니다.

따라서 /dev/null저장 매체의 일반 파일이 아니기 때문에 특정 파일 크기 를 가지고 있다고 말할 수는 없습니다 .


입력? 끝없는 NUL 문자 목록을 제공하는 것은 무엇입니까?
Jonathon

@JonathonWisnoski 나는 정확히 알지 못하고 결코 이것을 사용하지 않았으므로 설명이 나와있는 StackOverflow 에 관한 질문에 대한 링크를 제공 할 수 있습니다 .
바이트 사령관

7
@ JonathonWisnoski, no-입력시 크기가 0 인 파일처럼 작동하므로 처음 읽은 파일은 EOF에 있다고보고합니다.
godlygeek

네 맞습니다.
godlygeek

3
@JonathonWisnoski는 / dev / zero를 살펴보십시오.
Paŭlo Ebermann

16

/dev/null" device file " 이라는 특별한 종류의 파일 입니다.

장치 파일은 일부 커널 기능에 대한 인터페이스 역할을합니다. 디렉토리 엔트리 ( " inode ")에 필요한 공간 만 차지 하지만 실제 컨텐츠는없고 실제 파일 크기는 없습니다.

다른 장치 파일은 /dev/sda(일반적으로 HDD 또는 SSD), /dev/zero(읽을 때 0을 생성하는 파일) 또는 /dev/random(읽을 때 임의의 데이터를 생성하는 파일)입니다. 실제로 모든 파일 /dev/은 장치 파일 또는 장치 파일을 가리키는 링크입니다.


이 답변의 대부분이 정확하다는 것을 알지만 (+1), inode 항목의 크기를 차지한다고 말하는 것은 약간 잘못된 것 같습니다. 디스크 공간을 언급하는 경우 공간을 차지하지 않거나 전체 구현을 문자 장치로 언급하는 경우 더 많은 공간을 차지합니다.
kos

2
다른 파일과 마찬가지로 장치 파일에는 소유자, 권한, 주 / 부 번호 및 기타 메타 데이터를 저장하는 inode가 필요합니다. 파일 시스템에 따라이 inode가 저장되는 방법과 위치에 따라 다릅니다 ( mknod원하는 곳에서 장치 파일을 만드는 데 사용할 수 있음 ). /dev/inode 와 같은 가상 파일 시스템의 경우 디스크 공간을 차지하지 않고 일부 메모리를 차지합니다.
Florian Diesch

정확하게. 나는 자신을 잘 표현하지 못했다고 생각합니다. 아마도 내가 지적하는 것은 약간 까다 롭기 때문에 용서하십시오. 내가 의미하는 바는 각 문자 장치가 inode 항목으로 인해 메모리의 일부 공간을 차지한다고 말하면 해당 장치에서 읽거나 쓸 때 호출되는 함수를 지적하고 싶을 것입니다. 또한.
kos

파일이 inode 테이블 항목이 차지하는 공간을 차지한다고 말하는 것이 실제로 맞습니까? 필자는 이것이 파일 크기에 대해 이야기 할 때 사람들과 소프트웨어 사람들이 작성한 것에 일반적으로 포함되지 않는다고 생각합니다. 특히, 요구 lsdu같은 문자 특별 장치의 크기를보고 /dev/null또는 /dev/random수익률 0 .
Eliah Kagan

죄송하지만, 내가 말한 것에 대해 누군가가 나를 잘못 입증하지 않는 한, 문자 장치가 inode 항목의 공간을 차지한다고 말하는 것은 여전히 ​​옳지 않다고 생각하기 때문에이 답변을 하향 투표했습니다.
kos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.