장치 파일을 삭제하면 어떻게됩니까?


21

/ dev 아래에있는 파일에 대해 대략 알고 있습니다.

나는 두 가지 유형 (문자 / 블록)이 있다는 것을 알고 있습니다.이 파일에 액세스하면 커널의 드라이버와 통신합니다.

하나를 삭제하면 어떤 일이 발생하는지 알고 싶습니다. 특히 두 유형의 파일 모두에 해당합니다. 블록 장치 파일을 삭제하면 다음과 같은 /dev/sda영향이 있습니까? 디스크를 마운트 해제 했습니까?

마찬가지로, 삭제하면 /dev/mouse/mouse0어떻게됩니까? 마우스가 작동을 멈추나요? 자동으로 교체됩니까?

이 파일들을 삭제할 수 있습니까? VM이 설정되어 있으면 시도해보십시오.


1
SVR4 시스템에서 / dev / zero를 한 번 삭제했습니다. 나쁜 생각. 시스템을 다시 부팅 할 수 있도록 약간의 작업을 수행했습니다.
브래드 Lanam

답변:


30

그것들은 단순히 (특별한) 파일입니다. 실제 장치에 대한 "포인터"역할 만합니다. (즉, 커널 내부의 드라이버 모듈)

일부 명령 / 서비스가 이미 해당 파일을 열면 이미 장치에 대한 핸들이 있으며 계속 작동합니다.

일부 명령 / 서비스가 새 연결을 열려고하면 해당 파일에 액세스하려고 시도하고 "파일을 찾을 수 없음"으로 인해 실패합니다.

일반적으로 이러한 파일은 udev시스템 시작시 및 USB 장치 연결과 같은 특수 이벤트에서 자동으로 생성되지만을 사용하여 수동으로 생성 할 수도 있습니다 mknod.


3
이것은 실제로 질문에 대답하지 않습니다 ...
Gogeta70

"보통 그 파일들은 udev로 채워져 있습니다."일반적으로 Linux에서는. 거기 makedev보통 일을 명령하고, 달리 udev대부분의 운영 체제 유닉스 계열 중에서 존재하는 것으로 보인다.
Sergiy Kolodyazhnyy

1
@ Gogeta70이 게시물의 어느 부분이 답변되지 않습니까?
Ruslan

@RonJohn이 질문은 태그되어 linux있으며udev
Michael Mrozek

1
@RonJohn 네,하지만 "그러나". 우분투 해킹의 가 '06 같은 쇼에서이다 책 /etc/init.d/makedev. FreeBSD의 설명서 (1983) MAKEDEV는 BSD 4.2에 등장 언급하고있다. 나는 1983 년에 그것을 만들기 위해 단지 논리적으로있을 거라고 생각 MAKEDEV06으로 초기화를 통해 자동화
세르지 Kolodyazhnyy

8

장치 파일은 실제로 커널의 장치 테이블에있는 항목에 대한 파일 시스템 별명입니다. "ls -l"이있는 / dev 파일을 보면 주 장치 번호와 부 장치 번호가 있음을 알 수 있습니다. 파일 시스템에서 파일을 삭제하면 적절한 도구를 사용하여 특수 파일을 커널 장치 테이블의 항목에 다시 연결할 수 있습니다 (mknod (1) 참조).


3

그때부터는 해당 장치가 이미 열려있는 프로그램에서만 액세스 할 수 있습니다. 따라서 파일 시스템을 마운트 해제 할 수 없습니다. 그리고 udev를 사용하면 재부팅하면 해당 장치가 복원 될 수 있습니다. 유닉스를 배우는 이상한 방법.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.