บน linux คุณจะเรียงลำดับไฟล์ / etc / fstab ตามจุดเมานท์ได้อย่างไร
ฉันสนใจที่จะจัดเรียงส่วนของ fstab (อะไรก็ตามที่ติดตั้งใต้ / x) ในลักษณะที่พ่อแม่ติดตั้งก่อนลูก
$ grep "[[:space:]]/x" fstab
/dev/mapper/lv1 /x/a/b ext4 defaults 0 0
/dev/mapper/lv2 /x/c ext4 defaults 0 0
/dev/mapper/lv3 /x ext4 defaults 0 0
/dev/mapper/lv4 /x/a ext4 defaults 0 0
วิธี "ชัดเจน" ที่จะทำคือให้ผลลัพธ์ที่ตรงข้ามกับฉัน:
$ grep "[[:space:]]/x" fstab | sort fstab -k 2
/dev/mapper/lv1 /x/a/b ext4 defaults 0 0
/dev/mapper/lv4 /x/a ext4 defaults 0 0
/dev/mapper/lv2 /x/c ext4 defaults 0 0
/dev/mapper/lv3 /x ext4 defaults 0 0
การย้อนกลับงานอื่น ๆ ในบางกรณี แต่ในงานอื่น ๆ จะไม่ (ไม่รวมงานที่นี่อาจเป็นการละเมิดข้อตกลงการไม่เปิดเผยข้อมูล):
$ grep "[[:space:]]/x" fstab | sort fstab -k 2 -r
/dev/mapper/lv3 /x ext4 defaults 0 0
/dev/mapper/lv2 /x/c ext4 defaults 0 0
/dev/mapper/lv4 /x/a ext4 defaults 0 0
/dev/mapper/lv1 /x/a/b ext4 defaults 0 0
ฉันสังเกตเห็นว่ามันทำงานได้ในฟิลด์อื่นทั้งหมดยกเว้นฟิลด์เมานต์พอยต์ นอกจากนี้ฉันยังสังเกตเห็นว่าถ้าฉันตัดทุกสาขาหลังจากเมานต์มันก็ทำงานได้ตามที่คาดไว้ "
$ sort a -k 2
/dev/mapper/lv3 /x
/dev/mapper/lv4 /x/a
/dev/mapper/lv1 /x/a/b
/dev/mapper/lv2 /x/c
ฉันจะบรรลุผลนี้โดยไม่ต้องตัดฟิลด์ได้อย่างไร
ขอบคุณ
เกิดอะไรขึ้นกับตัวอย่างที่สาม?
—
BenjiWiebe
ทำไมคุณต้องเรียงลำดับนี้ systemdฉลาดพอที่จะคิดออกว่าพวกเขาขึ้นอยู่กับแต่ละอื่น ๆ
—
Cristian Ciupitu
ตัวอย่างที่สามทำงานได้ แต่ "sort fstab -k 2 -r" ใช้งานไม่ได้กับ fstabs ทั้งหมดที่ฉันมี (เซิร์ฟเวอร์ 50+ เครื่อง)
—
Diego Puertas
Cristian: จริงเหรอ? ฉันลองบนเครื่องเสมือนและมันไม่สามารถเมานเด็ก ๆ ได้ยกเว้นว่าผู้ปกครองจะระบุไว้ใน / etc / fstab เป็นครั้งแรก
—
Diego Puertas