จะเกิดอะไรขึ้นถ้าคุณลบไฟล์อุปกรณ์


21

ฉันรู้เกี่ยวกับไฟล์ที่อยู่ใต้ / dev คร่าวๆ

ฉันรู้ว่ามีสองประเภท (ตัวอักษร / บล็อก) การเข้าถึงไฟล์เหล่านี้สื่อสารกับไดรเวอร์ในเคอร์เนล

ฉันต้องการทราบว่าจะเกิดอะไรขึ้นหากฉันลบไฟล์หนึ่ง - โดยเฉพาะสำหรับไฟล์ทั้งสองประเภท ถ้าฉันลบไฟล์อุปกรณ์บล็อกให้พูดว่า/dev/sdaมันจะมีผลกระทบอะไร - ถ้ามี - มีอะไรบ้าง ฉันเพิ่ง unmount ดิสก์หรือไม่

ในทำนองเดียวกัน/dev/mouse/mouse0จะเกิดอะไรขึ้นถ้าฉันลบ- จะเกิดอะไรขึ้น เมาส์หยุดทำงานหรือไม่ มันจะแทนที่ตัวเองโดยอัตโนมัติหรือไม่

ฉันสามารถลบไฟล์เหล่านี้ได้หรือไม่? ถ้าฉันตั้งค่า VM ฉันจะลอง


1
ฉันลบ / dev / ศูนย์ในระบบ SVR4 หนึ่งครั้ง ความคิดที่ไม่ดี ใช้เวลาสักหน่อยเพื่อให้ระบบของฉันสามารถบูตได้อีกครั้ง
แบรดลานาม

คำตอบ:


30

ไฟล์เหล่านี้เป็นเพียง (พิเศษ) พวกเขาทำหน้าที่เป็น "ตัวชี้" ไปยังอุปกรณ์จริงเท่านั้น (เช่นโมดูลไดรเวอร์ภายในเคอร์เนล)

หากคำสั่ง / บริการบางอย่างเปิดไฟล์นั้นแล้วมันมีการจัดการกับอุปกรณ์และจะทำงานต่อไป

หากคำสั่ง / บริการบางอย่างพยายามที่จะเปิดการเชื่อมต่อใหม่ก็จะพยายามเข้าถึงไฟล์นั้นและล้มเหลวเพราะ "ไม่พบไฟล์"

โดยทั่วไปไฟล์เหล่านั้นจะบรรจุด้วยudevซึ่งจะสร้างโดยอัตโนมัติเมื่อเริ่มต้นระบบและในกิจกรรมพิเศษเช่นการเสียบอุปกรณ์ USB แต่คุณสามารถสร้างไฟล์ด้วยตนเองmknodได้


3
นี่ไม่ได้ตอบคำถามจริงๆ ...
Gogeta70

"โดยปกติแล้วไฟล์เหล่านั้นจะถูกเติมโดย udev" โดยปกติแล้วบน Linux มี makedevคำสั่งซึ่งมักจะทำงานและไม่เหมือนudevที่ปรากฏในระบบปฏิบัติการยูนิกซ์
Sergiy Kolodyazhnyy

1
@ Gogeta70 โพสต์นี้เป็นส่วนใดของคำถามที่ไม่ได้รับคำตอบ?
Ruslan

@RonJohn คำถามถูกติดแท็กlinuxและudev
Michael Mrozek

1
@ RonJohn ใช่ แต่ด้วย "but" อูบุนตู Hacks หนังสือเล่มหนึ่งซึ่งอยู่ห่างจากเช่น 06 /etc/init.d/makedevแสดงให้เห็นว่ามี คู่มือ FreeBSDกล่าว MAKEDEV ปรากฏใน 4.2BSD (จาก 1983) ฉันคิดว่าในปี 1983 มันเป็นเรื่องสมเหตุสมผลที่จะสร้างMAKEDEVระบบอัตโนมัติผ่าน init ในขณะที่ 06
Sergiy Kolodyazhnyy

8

ไฟล์อุปกรณ์เป็นชื่อระบบไฟล์จริงสำหรับรายการในตารางอุปกรณ์ของเคอร์เนล หากคุณดูที่ไฟล์ / dev ด้วย "ls -l" คุณจะเห็นว่ามีหมายเลขอุปกรณ์หลักและหมายเลขอุปกรณ์รอง หากคุณลบไฟล์ออกจากระบบไฟล์คุณสามารถสร้างไฟล์ใหม่ได้ตลอดเวลาโดยใช้เครื่องมือที่เหมาะสมเพื่อเชื่อมโยงไฟล์พิเศษไปยังรายการในตารางอุปกรณ์เคอร์เนล - ดู mknod (1)


3

ตั้งแต่วินาทีนั้นเป็นต้นมาพวกเขาสามารถเข้าถึงได้โดยโปรแกรมที่เปิดอุปกรณ์เหล่านั้นไว้ ดังนั้นจึงไม่มีวิธีที่จะยกเลิกการต่อเชื่อมระบบไฟล์ และด้วย udev การรีบูตอาจคืนค่าอุปกรณ์เหล่านั้น วิธีที่แปลกในการเรียนรู้ยูนิกซ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.