“ ทุกอย่างเป็นไฟล์” หมายถึงอะไรใน Linux
หนึ่งในคุณสมบัติการกำหนดของ Linux และระบบปฏิบัติการคล้าย UNIX อื่น ๆ คือ“ ทุกอย่างเป็นไฟล์” นี่เป็นการอธิบายที่กว้างขวาง แต่การเข้าใจความหมายของมันจะช่วยให้คุณเข้าใจวิธีการทำงานของ Linux.
มีหลายสิ่งบน Linux ที่ปรากฏในระบบไฟล์ของคุณ แต่จริงๆแล้วไม่ใช่ไฟล์ เป็นไฟล์พิเศษที่แสดงถึงอุปกรณ์ฮาร์ดแวร์ข้อมูลระบบและสิ่งอื่น ๆ - รวมถึงตัวสร้างตัวเลขแบบสุ่ม.
ไฟล์พิเศษเหล่านี้อาจอยู่ในระบบหลอกหรือระบบไฟล์เสมือนเช่น / dev ซึ่งมีไฟล์พิเศษที่แสดงถึงอุปกรณ์และ / proc ซึ่งมีไฟล์พิเศษที่แสดงถึงระบบและข้อมูลกระบวนการ.
proc /
ตัวอย่างเช่นสมมติว่าคุณต้องการค้นหาข้อมูลเกี่ยวกับ CPU ของคุณ ไดเร็กทอรี / proc มีไฟล์พิเศษ - / proc / cpuinfo - ที่มีข้อมูลนี้.
คุณไม่ต้องการคำสั่งพิเศษที่บอกข้อมูล CPU ของคุณคุณสามารถอ่านเนื้อหาของไฟล์นี้โดยใช้คำสั่งมาตรฐานที่ทำงานกับไฟล์ข้อความธรรมดา ตัวอย่างเช่นคุณสามารถใช้คำสั่ง cat / proc / cpuinfo เพื่อพิมพ์เนื้อหาของไฟล์นี้ไปยังเทอร์มินัล - พิมพ์ข้อมูล CPU ของคุณไปยังเทอร์มินัล คุณสามารถเปิด / proc / cpuinfo ในโปรแกรมแก้ไขข้อความเพื่อดูเนื้อหา.
โปรดจำไว้ว่า / proc / cpuinfo ไม่ใช่ไฟล์ข้อความที่มีข้อมูลนี้จริง - เคอร์เนล Linux และระบบไฟล์ proc กำลังแสดงข้อมูลนี้ให้เราเห็นว่าเป็นไฟล์ สิ่งนี้ทำให้เราสามารถใช้เครื่องมือที่คุ้นเคยเพื่อดูและทำงานกับข้อมูล.
ไดเร็กทอรี / proc ยังมีไฟล์ที่คล้ายกันอื่น ๆ เช่น:
- / proc / uptime - เปิดเผยสถานะการออนไลน์ของเคอร์เนล Linux ของคุณ - อีกนัยหนึ่งระบบของคุณใช้งานได้นานเท่าใดโดยไม่ต้องปิดเครื่อง.
- / proc / version - เปิดเผยเวอร์ชันของเคอร์เนล Linux ของคุณ.
/ dev
ในไดเรกทอรี / dev คุณจะพบไฟล์ที่แสดงอุปกรณ์ - รวมถึงไฟล์ที่แสดงสิ่งพิเศษอื่น ๆ ตัวอย่างเช่น / dev / cdrom เป็นไดรฟ์ซีดีรอมของคุณ / dev / sda แสดงถึงฮาร์ดไดรฟ์แรกของคุณในขณะที่ / dev / sda1 แสดงถึงพาร์ติชันแรกบนฮาร์ดไดรฟ์ตัวแรกของคุณ.
ต้องการติดตั้งซีดีรอมของคุณหรือไม่ รันคำสั่ง mount และระบุ / dev / cdrom เป็นอุปกรณ์ที่คุณต้องการเมานต์ ต้องการแบ่งพาร์ติชั่นฮาร์ดไดรฟ์เครื่องแรกหรือไม่? รันยูทิลิตี้การแบ่งพาร์ติชันดิสก์และระบุ / dev / sda เป็นฮาร์ดดิสก์ที่คุณต้องการแก้ไข ต้องการฟอร์แมตพาร์ติชันแรกบนฮาร์ดไดรฟ์ตัวแรกของคุณหรือไม่ เรียกใช้คำสั่งการจัดรูปแบบและบอกให้ฟอร์แมต / dev / sda1.
อย่างที่คุณเห็นการเปิดเผยอุปกรณ์เหล่านี้เป็นส่วนหนึ่งของระบบไฟล์มีข้อดี ระบบไฟล์จัดเตรียม "พื้นที่ชื่อ" ที่สอดคล้องกันซึ่งแอ็พพลิเคชันทั้งหมดสามารถใช้เพื่อระบุที่อยู่และเข้าถึงอุปกรณ์.
/ dev / null, / dev / random, และ / dev / ศูนย์
ระบบไฟล์ / dev ไม่เพียง แต่บรรจุไฟล์ที่เป็นตัวแทนของอุปกรณ์ทางกายภาพ นี่คืออุปกรณ์พิเศษที่โดดเด่นที่สุดสามอย่างที่มี:
- / dev / null - ทิ้งข้อมูลทั้งหมดที่เขียนไป - คิดว่ามันเป็นถังขยะหรือหลุมดำ หากคุณเคยเห็นความคิดเห็นที่บอกให้คุณส่งคำร้องเรียนไปที่ / dev / null - นั่นเป็นวิธีที่พูดเกินคำว่า "โยนพวกเขาในถังขยะ"
- / dev / random - สร้างการสุ่มโดยใช้เสียงสิ่งแวดล้อม มันเป็นตัวสร้างตัวเลขสุ่มที่คุณสามารถแตะ.
- / dev / ศูนย์ - ผลิตศูนย์ - กระแสคงที่ของศูนย์.
หากคุณคิดว่าไฟล์ทั้งสามนี้เป็นไฟล์คุณจะไม่เห็นการใช้งานสำหรับไฟล์เหล่านั้น ให้คิดว่ามันเป็นเครื่องมือแทน.
ตัวอย่างเช่นโดยค่าเริ่มต้นคำสั่ง Linux จะสร้างข้อความแสดงข้อผิดพลาดและเอาต์พุตอื่น ๆ ที่พิมพ์ไปยังเอาต์พุตมาตรฐานโดยปกติแล้วจะเป็นเทอร์มินัล หากคุณต้องการรันคำสั่งและไม่สนใจเกี่ยวกับเอาต์พุตคุณสามารถเปลี่ยนทิศทางเอาต์พุตไปยัง / dev / null การเปลี่ยนทิศทางเอาต์พุตของคำสั่งไปที่ / dev / null จะยกเลิกทันที แทนที่จะให้ทุกคำสั่งใช้ "โหมดเงียบ" ของตนเองคุณสามารถใช้วิธีนี้กับคำสั่งใด ๆ.
คำสั่ง> / dev / null
หากคุณต้องการแหล่งที่มาของการสุ่ม - พูดสำหรับการสร้างคีย์การเข้ารหัสคุณไม่จำเป็นต้องเขียนตัวสร้างตัวเลขสุ่มของคุณเอง - คุณสามารถใช้ / dev / random.
ในการลบเนื้อหาของฮาร์ดไดรฟ์โดยการเขียน 0 ลงไปคุณไม่จำเป็นต้องใช้ยูทิลิตี้พิเศษสำหรับการขับรถเป็นศูนย์ - คุณสามารถใช้ยูทิลิตี้มาตรฐานและ / dev / ศูนย์ ตัวอย่างเช่น DD คำสั่งอ่านจากตำแหน่งและเขียนไปยังตำแหน่งอื่น คำสั่งต่อไปนี้จะอ่านค่าศูนย์จาก / dev / ศูนย์และเขียนโดยตรงไปยังพาร์ติชันฮาร์ดดิสก์แรกในระบบของคุณลบเนื้อหาอย่างสมบูรณ์.
(การเตือน: คำสั่งนี้จะลบข้อมูลทั้งหมดในพาร์ติชันแรกของคุณหากคุณเรียกใช้ เรียกใช้คำสั่งนี้เฉพาะเมื่อคุณต้องการทำลายข้อมูล)
วันถ้า = / dev / ศูนย์จาก = / dev / sda1
ที่นี่เราใช้ dd พร้อมไฟล์พิเศษ (/ dev / zero และ / dev / sda1) แต่เราสามารถใช้ dd เพื่ออ่านและเขียนไฟล์จริงได้ คำสั่งเดียวกันใช้งานได้ทั้งกับการจัดการอุปกรณ์โดยตรงและทำงานกับไฟล์.
การอธิบาย
ในทางปฏิบัติมันแม่นยำมากกว่าที่จะบอกว่า "ทุกอย่างเป็นกระแสข้อมูลของไบต์" มากกว่า "ทุกอย่างเป็นไฟล์" / dev / random ไม่ใช่ไฟล์ แต่แน่นอนว่ามันเป็นกระแสข้อมูลไบต์ และถึงแม้ว่าสิ่งเหล่านี้ในทางเทคนิคไม่ใช่ไฟล์ แต่สามารถเข้าถึงได้ในระบบไฟล์ - ระบบไฟล์เป็น "พื้นที่ชื่อ" สากลที่ทุกสิ่งสามารถเข้าถึงได้ ต้องการเข้าถึงเครื่องสร้างตัวเลขสุ่มหรืออ่านโดยตรงจากอุปกรณ์? คุณจะพบทั้งในระบบไฟล์ ไม่จำเป็นต้องกำหนดรูปแบบอื่น.
แน่นอนว่าบางสิ่งไม่ใช่ไฟล์จริงๆ - กระบวนการที่ทำงานบนระบบของคุณไม่ได้เป็นส่วนหนึ่งของระบบไฟล์ “ ทุกอย่างเป็นไฟล์” ไม่ถูกต้อง แต่มีหลายสิ่งที่ทำตัวเป็นไฟล์.