Score:1

เหตุใด "ls -U" ในไดเร็กทอรีที่มีไฟล์จำนวนมากจึงใช้เวลานาน ในขณะที่ "ls -U | head" ส่งคืนคำตอบทันที

ธง cn

เมื่อคุณต้องการตัวอย่างชื่อไฟล์จากไดเร็กทอรีที่มีไฟล์จำนวนมาก ขอแนะนำให้ทำ "ls -U | head" เพราะมิฉะนั้นการทำ "ls" เพียงอย่างเดียวอาจใช้เวลาค่อนข้างนาน

อย่างไรก็ตาม เหตุใด "ls -U" ด้วยตัวเองจึงไม่เริ่มส่งคืนเอาต์พุตทันทีที่รัน

Score:1
ธง cn

GNU ls -U หมายถึงเอาต์พุตที่ไม่เรียงลำดับ ดังนั้นจึงไม่จำเป็นต้องรอให้เนื้อหาไดเร็กทอรีทั้งหมดเริ่มพิมพ์

head จะปิด stdin และออกหลังจากจำนวนบรรทัดเล็กน้อย เมื่อผู้เขียนไปยังท่อ ls ในกรณีนี้ ไม่มีผู้อ่านเพิ่มเติม มันจะออก วิธีนี้จะล้าง I/O ทั้งหมดที่เกี่ยวข้องหลังจากใช้บรรทัดเพียงเล็กน้อยเท่านั้น ทำให้การใช้งานแบบโต้ตอบดูเหมือนเร็ว

อ่านเพิ่มเติม: กระบวนการไม่ปิดเมื่อปิด stdin


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

นอกเหนือจากจำนวนไฟล์ที่กำหนดแล้ว คุณควรพิจารณาเค้าโครงไดเร็กทอรีและฐานข้อมูลที่ปรับเปลี่ยนใหม่ ในระยะสั้น ให้ใส่ไดรฟ์ข้อมูลปัญหาบน SSD ที่รวดเร็วเพื่อให้ประสิทธิภาพการทำงานอยู่ในระดับที่ยอมรับได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา