방금 최신 버전의 openSuse Tumbleweed를 설치하고 이에 익숙해지기 위해 파일 시스템을 검색하던 중 /dev/lightnvm에서 "control"이라는 파일을 발견했습니다. cat
file() 에서 실행을 시도했지만 cat control
이렇게 하면 다음 오류가 발생합니다.
cat: control: Invalid argument
파일에 액세스하려면 적절한 모든 권한이 있어야 합니다. "제어" 파일의 내용을 볼 수 없는 이유에 대한 아이디어가 있습니까?
답변1
c
첫 번째 열의 출력은 ls
이것이 문자임을 나타냅니다.장치 파일. 이는 일반 파일이 아니며 실제 "콘텐츠"가 없습니다.
일반 파일을 열고 읽을 때 커널은 표준 코드를 실행하여 하드 드라이브(또는 유사한 저장소)에서 파일 데이터를 가져옵니다. 그러나 장치 파일에 액세스하면 커널은 해당 장치("장치 드라이버")에 특정한 코드를 실행합니다. 분명히 lightnvm 장치 드라이버의 작성자는 특정 장치에서 데이터를 읽는 것이 의미가 없도록 코드를 설계했기 때문에 코드에서 그렇게 하려고 하면 오류가 발생해야 한다고 말합니다.
(아마도 이 장치를 사용해야 하는 코드는 이 파일에 써야 합니다. 이름에서 control
알 수 있듯이 장치에 명령을 보내려면 이 파일에 써야 합니다. 또한 읽거나 쓸 수 없지만 다음에서 사용하는 경우도 있습니다. ioctl()
시스템 호출 액세스.)
/dev
당신이 무엇을 하고 있는지 정말로 알지 않는 한, "파일"을 만지작거리는 것은 일반적으로 좋은 생각이 아닙니다. 임의의 장치 파일에 쓰는 것은 매우 위험할 수 있습니다. 예를 들어 echo hello >/dev/sda
시스템을 부팅할 수 없게 만들고 파일을 복구하기 어렵게 만들 수 있습니다. 어떤 경우에는 장치 파일을 읽는 것조차 위험할 수 있거나 적어도 예상치 못한 동작으로 이어질 수 있습니다.