Điều gì xảy ra nếu bạn xóa một tập tin thiết bị?


21

Tôi đại khái biết về các tập tin nằm dưới / dev.

Tôi biết có hai loại (ký tự / khối), truy cập các tệp này giao tiếp với trình điều khiển trong kernel.

Tôi muốn biết điều gì xảy ra nếu tôi xóa một - đặc biệt cho cả hai loại tệp. Nếu tôi xóa một tập tin thiết bị khối, hãy nói /dev/sda, có ảnh hưởng gì - nếu có - điều này có? Có phải tôi vừa tháo đĩa?

Tương tự, nếu tôi xóa /dev/mouse/mouse0- chuyện gì xảy ra? Chuột có ngừng hoạt động không? Nó tự động thay thế chính nó?

Tôi thậm chí có thể xóa các tập tin này? Nếu tôi có một VM được thiết lập, tôi sẽ thử nó.


1
Tôi đã xóa / dev / zero trên hệ thống SVR4 một lần. Ý kiến ​​tồi. Mất một chút công việc để hệ thống của tôi có thể khởi động lại.
Brad Lanam

Câu trả lời:


30

Đó chỉ là những tập tin (đặc biệt). Chúng chỉ đóng vai trò là "con trỏ" cho thiết bị thực tế. (tức là mô-đun trình điều khiển bên trong kernel.)

Nếu một số lệnh / dịch vụ đã mở tệp đó, nó đã xử lý thiết bị và sẽ tiếp tục hoạt động.

Nếu một số lệnh / dịch vụ cố gắng mở một kết nối mới, nó sẽ cố truy cập vào tệp đó và không thành công do "không tìm thấy tệp".

Thông thường, các tệp đó được tạo bởi udev, chúng tự động tạo chúng khi khởi động hệ thống và trong các sự kiện đặc biệt như cắm thiết bị USB, nhưng bạn cũng có thể tự tạo chúng bằng cách sử dụng mknod.


3
Điều này không thực sự trả lời câu hỏi ...
Gogeta70

"Thông thường những tệp đó được điền bởi udev" Thông thường, nhưng trên Linux. Có makedevlệnh thường làm công việc đó, và không giống như udevnó có mặt trong hầu hết các os giống như unix.
Sergiy Kolodyazhnyy

1
@ Gogeta70 phần nào của câu hỏi mà bài đăng này không được trả lời?
Ruslan

@RonJohn Câu hỏi được gắn thẻ linuxudev
Michael Mrozek

1
@RonJohn Có, nhưng với "nhưng". Các Ubuntu Hacks cuốn sách đó là từ như '06 show có /etc/init.d/makedev. Các nhãn hiệu freebsd đề cập MAKEDEV xuất hiện trong 4.2BSD (từ năm 1983). Tôi nghĩ vào năm 1983, sẽ rất hợp lý khi MAKEDEVtự động hóa thông qua init như trong 06
Sergiy Kolodyazhnyy

8

Các tệp thiết bị thực sự là một bí danh hệ thống tệp cho một mục trong bảng thiết bị của kernel. Nếu bạn xem các tập tin / dev với "ls -l", bạn sẽ thấy họ có số thiết bị chính và số thiết bị phụ. Nếu bạn xóa các tệp khỏi hệ thống tệp, bạn luôn có thể tạo lại chúng bằng các công cụ thích hợp để gửi lại tệp đặc biệt vào mục trong bảng thiết bị kernel - xem mknod (1).


3

Từ thời điểm đó, chúng chỉ có thể được truy cập bởi các chương trình đã mở các thiết bị đó. Vì vậy, không có cách nào để ngắt kết nối các hệ thống tập tin. Và với udev, khởi động lại có thể khôi phục các thiết bị đó. Một cách lạ để học unix.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.