Linux: เรียงลำดับ / etc / fstab ตามฟิลด์เมานต์


0

บน 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

คำตอบ:


1

ลองนี้ :-)

$ grep "[[:space:]]/x" fstab | sort -k2,2
/dev/mapper/lv3         /x                      ext4    defaults        0 0
/dev/mapper/lv4         /x/a                    ext4    defaults        0 0
/dev/mapper/lv1         /x/a/b                  ext4    defaults        0 0
/dev/mapper/lv2         /x/c                    ext4    defaults        0 0
$ 

-k startfield, endfield - มิฉะนั้น -k2 หมายถึงการเริ่มต้นด้วย column2 จนถึงจุดสิ้นสุดของบรรทัด

แค่นั้นแหละ.

จางไป

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