1
คำสั่ง find Linux ทำงานผิดปกติ
ค้นหาบริการที่ได้รับการแก้ไขระบบตามการเปิดเผยช่องโหว่เมื่อเร็ว ๆ นี้ฉันมาเพื่อดูพฤติกรรมแปลก ๆ จากคำสั่ง find root@localhost:/# find . -name "*systemd-resolved*" ./usr/share/man/man8/systemd-resolved.service.8.gz ./usr/share/man/man8/systemd-resolved.8.gz คำสั่งส่งคืน 0 หรือสองบรรทัดเป็นเอาต์พุตสำหรับการรันครั้งแรก แต่ถ้าฉันรันคำสั่งในครั้งที่สองฉันจะได้รับ: root@localhost:/# find . -name "*systemd-resolved*" ./usr/share/man/man8/systemd-resolved.service.8.gz ./usr/share/man/man8/systemd-resolved.8.gz ./lib/systemd/systemd-resolved ./lib/systemd/system/systemd-resolved.service.d ./lib/systemd/system/systemd-resolved.service นี่หมายถึงเป็นครั้งแรกที่ "ค้นหา" ไม่พบทุกสิ่ง นอกจากนี้สิ่งนี้เกิดขึ้นเพียงครั้งเดียว การรันคำสั่งครั้งต่อไปจะแสดงเอาต์พุตที่ถูกต้อง ฉันตรวจสอบเรื่องนี้ในบางระบบที่ติดตั้ง Debian 8 (jessie) สำหรับผู้ที่มีเคอร์เนล 4.9+ ปัญหานี้จะเกิดขึ้นเสมอ แต่สำหรับระบบที่มีเคอร์เนล 3.16 จะไม่เกิดขึ้น หลังจากรีบูตระบบทั้งหมดนี้เกิดขึ้นอีกครั้ง แต่พฤติกรรมนั้นเหมือนกันสำหรับแต่ละระบบ นั่นหมายความว่าหากการทดสอบระบบเฉพาะส่งคืนสองบรรทัด (ผิด) สำหรับการรันครั้งแรกและเอาต์พุตที่ถูกต้องสำหรับการรันครั้งที่สองการรันครั้งแรกของคำสั่งหลังจากรีบูตระบบจะพิมพ์ 2 บรรทัดอีกครั้ง ดังนั้นระบบแสดงพฤติกรรมเดียวกันหลังจากรีบูตแต่ละครั้ง …