ในระบบปฏิบัติการคอมพิวเตอร์ ไฟล์พิเศษ คือ ไฟล์ ประเภทหนึ่งที่อาจถูกเก็บไว้ในระบบไฟล์ ไฟล์พิเศษบางครั้งเรียกว่า ไฟล์อุปกรณ์
วัตถุประสงค์ของไฟล์พิเศษคือการเปิดเผยอุปกรณ์เป็นไฟล์ในระบบไฟล์ ไฟล์พิเศษจัดเตรียมอินเตอร์เฟสสากลสำหรับอุปกรณ์ฮาร์ดแวร์ (และอุปกรณ์เสมือนที่สร้างและใช้โดยเคอร์เนล) เนื่องจากเครื่องมือสำหรับไฟล์ 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)