ไฟล์พิเศษคืออะไร?

ในระบบปฏิบัติการคอมพิวเตอร์ ไฟล์พิเศษ คือ ไฟล์ ประเภทหนึ่งที่อาจถูกเก็บไว้ในระบบไฟล์ ไฟล์พิเศษบางครั้งเรียกว่า ไฟล์อุปกรณ์

วัตถุประสงค์ของไฟล์พิเศษคือการเปิดเผยอุปกรณ์เป็นไฟล์ในระบบไฟล์ ไฟล์พิเศษจัดเตรียมอินเตอร์เฟสสากลสำหรับอุปกรณ์ฮาร์ดแวร์ (และอุปกรณ์เสมือนที่สร้างและใช้โดยเคอร์เนล) เนื่องจากเครื่องมือสำหรับไฟล์ I / O สามารถใช้เพื่อเข้าถึงอุปกรณ์

เมื่อข้อมูลเป็นสีแดงหรือเขียนไปยังไฟล์พิเศษการดำเนินการจะเกิดขึ้นทันทีและไม่อยู่ภายใต้กฎของระบบไฟล์ทั่วไป

ใน Linux มีไฟล์พิเศษสองประเภทคือ บล็อกไฟล์พิเศษ และ ไฟล์ อักขระพิเศษ

ไฟล์พิเศษของบล็อก ทำหน้าที่เป็นอินเตอร์เฟสโดยตรงไปยังอุปกรณ์บล็อก อุปกรณ์บล็อกคืออุปกรณ์ใด ๆ ที่ดำเนินการข้อมูล I / O ในหน่วยของบล็อก

ตัวอย่างของการบล็อกไฟล์พิเศษ:

  • / dev / sd xn - พาร์ติชันที่ติดตั้งอยู่ของอุปกรณ์เก็บข้อมูลจริง ตัวอักษร x หมายถึงอุปกรณ์ฟิสิคัลและหมายเลข n หมายถึงพาร์ติชันบนอุปกรณ์นั้น ตัวอย่างเช่น / dev / sda1 โดยปกติแล้วจะเป็นพาร์ติชันแรกบนอุปกรณ์เก็บข้อมูลทางกายภาพครั้งแรก
  • / dev / loop n - อุปกรณ์ลูป อุปกรณ์เหล่านี้เป็นอุปกรณ์พิเศษที่อนุญาตให้ใช้ไฟล์ในระบบไฟล์เป็นอุปกรณ์บล็อก ไฟล์อาจมีระบบไฟล์ทั้งหมดของตัวเองและสามารถเข้าถึงราวกับว่ามันเป็นพาร์ทิชันที่ติดตั้งบนอุปกรณ์จัดเก็บข้อมูลทางกายภาพ ตัวอย่างเช่นไฟล์อิมเมจดิสก์ ISO อาจถูกเมาท์เป็นอุปกรณ์ลูป

หากคุณต้องการทราบว่าบล็อกของคุณมีขนาดใหญ่เท่าไรให้รัน " blockdev --getbsz device " ในฐานะรูทเช่น:

 sudo blockdev --getbsz / dev / sda1 
 4096 

ในตัวอย่างนี้ขนาดบล็อกคือ 4096 ไบต์ (4 kibibytes)

ไฟล์พิเศษของตัวละคร

ไฟล์อักขระพิเศษ คล้ายกับอุปกรณ์บล็อก แต่ข้อมูลจะถูกเขียนหนึ่งอักขระ (แปดบิตหรือหนึ่งไบต์) ในแต่ละครั้ง

ตัวอย่างไฟล์พิเศษของอักขระ:

  • / dev / stdin (อินพุตมาตรฐาน)
  • / dev / stdout (เอาต์พุตมาตรฐาน)
  • / dev / stderr (ข้อผิดพลาดมาตรฐาน)
  • / dev / random (PRNG ซึ่งอาจชะลอการส่งคืนค่าเพื่อรับเอนโทรปีเพิ่มเติม)
  • / dev / urandom (PRNG ซึ่งจะส่งคืนค่าทันทีโดยไม่คำนึงถึงเอนโทรปีที่ต้องการ)
  • / dev / null (อุปกรณ์ null การอ่านจากไฟล์นี้จะมีค่าเป็น null เสมอการเขียนไปยังไฟล์นี้จะไม่ทำอะไรเลย)

ประเภทไฟล์ Linux

ในเคอร์เนล Linux จะมีการประกาศประเภทไฟล์ในไฟล์ส่วนหัว sys / stat.h ชื่อประเภทชื่อสัญลักษณ์และ bitmask สำหรับไฟล์ Linux แต่ละประเภทมีการระบุไว้ด้านล่าง

ฉันจะบอกได้อย่างไรว่าไฟล์พิเศษหรือไม่

ทดสอบบล็อกพิเศษ

ใน bash คำสั่ง " test -b file " ส่งคืนสถานะการออกเป็น 0 หาก ไฟล์ เป็นบล็อกพิเศษหรือ 1 หาก ไฟล์ เป็นประเภทอื่นหรือไม่มีอยู่

 ทดสอบ -b / dev / sda1; echo $ # ตรวจสอบบล็อกพิเศษสถานะออกจากการทดสอบ echo 
 0 
 ทดสอบ -b / dev / null; echo $ # ไฟล์พิเศษของตัวละครไม่ได้บล็อกเป็นพิเศษ 
 1 

ทดสอบตัวละครพิเศษ

ในการพิจารณาว่าไฟล์เป็นอักขระพิเศษหรือไม่ให้ใช้ " test -c file ":

 ทดสอบ -c / dev / null; echo $ 
 0 

ใช้สถิติ

นอกจากนี้คุณยังสามารถตรวจสอบประเภทของไฟล์ด้วย สถิติ :

 สถิติ / dev / sda1 
 ไฟล์: / dev / sda1 ขนาด: 0 บล็อก: 0 IO Block: ไฟล์พิเศษ 4096 บล็อก อุปกรณ์: 6h / 6d Inode: 7998 ลิงค์: 1 ประเภทอุปกรณ์: 8, 1 การเข้าถึง: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / ดิสก์) การเข้าถึง: 2018-07-08 06: 41: 25.540000000 -0400 แก้ไข: 2018-07-08 06: 41: 25.540000000 -0400 เปลี่ยน: 2018-07-08 06: 41: 25.540000000 -0400 เกิด: - 
 สถิติ / dev / สุ่ม 
 ไฟล์: / dev / random ขนาด: 0 บล็อก: 0 IO Block: ไฟล์พิเศษ 4096 ตัวอักษร อุปกรณ์: 6h / 6d Inode: 6518 ลิงค์: 1 ประเภทอุปกรณ์: 1, 8 การเข้าถึง: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) การเข้าถึง: 2018-07-08 06: 41: 19.676000000 -0400 แก้ไข: 2018-07-08 06: 41: 19.676000000 -0400 เปลี่ยน: 2018-07-08 06:41 : 19.676000000 -0400 เกิด: - 

Inode, ข้อกำหนดของระบบปฏิบัติการ, อินพุตมาตรฐาน (stdin), เอาต์พุตมาตรฐาน (stdout)