การค้นหาไฟล์ขนาดใหญ่และไฟล์เก่าด้วย find
เครื่องมือบรรทัดคำสั่งทุกดิสทริบิวชัน Linux
find เป็นคำสั่งมาตรฐานของ Linux ที่ใช้ค้นหาไฟล์ในโครงสร้างไดเรกทอรีตามเงื่อนไขต่างๆ เช่น ขนาด อายุ ชื่อ หรือประเภทไฟล์ คำสั่ง find / -xdev -type f -size +1G จะแสดงรายการไฟล์ที่มีขนาดใหญ่กว่า 1 GB บนระบบไฟล์รูท ซึ่งมักเป็นวิธีที่เร็วที่สุดในการดูว่ามีอะไรที่ทำให้ดิสก์เต็มกะทันหัน
1เงื่อนไขการทดสอบที่มีประโยชน์
-size +500M (ใหญ่กว่า 500 MiB), -mtime +30 (แก้ไขเมื่อมากกว่า 30 วันที่แล้ว), -name '*.log', -type f (เฉพาะไฟล์), -xdev (ไม่ข้ามไปยังระบบไฟล์อื่น)
2การแสดงขนาดไฟล์
เพิ่ม '-exec ls -lh {} +' เพื่อดูขนาดไฟล์ หรือใช้ -printf ของ GNU find เช่น -printf '%s %p\n' แล้วจัดเรียงผลลัพธ์
3การลบอย่างปลอดภัย
-delete จะลบทุกรายการที่ตรงกับเงื่อนไขทันที ให้รันคำสั่งเดิมโดยไม่ต้องใส่ -delete ก่อน อ่านรายการที่แสดง แล้วจึงเพิ่ม -delete เป็นตัวเลือกสุดท้าย
วิธีค้นหาไฟล์ที่มีขนาดใหญ่กว่า 1 GB
- รันคำสั่ง:
sudo find / -xdev -type f -size +1G -exec ls -lh {} + - ระบุโปรแกรมที่เป็นเจ้าของไฟล์แต่ละไฟล์ก่อนที่จะลบ
- สำหรับไฟล์บันทึกเก่า ให้ดูตัวอย่างก่อน:
sudo find /var/log -type f -name '*.gz' -mtime +30 - จากนั้นค่อยลบ:
sudo find /var/log -type f -name '*.gz' -mtime +30 -delete
ข้อควรระวัง
- การวาง -delete ไว้หน้าเงื่อนไขการทดสอบจะลบทุกอย่างภายใต้พาธนั้น
- ไฟล์ฐานข้อมูล ไฟล์ดิสก์เสมือน และไฟล์ swap มีขนาดใหญ่โดยเจตนา: ห้ามลบไฟล์เหล่านี้
บทความที่เกี่ยวข้อง
- การใช้งานดิสก์ด้วย du และ ncduวิธีค้นหาว่าสิ่งใดทำให้ดิสก์ Linux เต็มด้วย du และ ncdu แบบโต้ตอบ พร้อมตัวเลือกที่จำกัดการทำงานอยู่ภายในระบบไฟล์เดียว
- Inodes และ 'No space left on device'inode คืออะไร วิธีดูการใช้งาน inode ด้วย df -i และวิธีค้นหาไดเรกทอรีที่มีไฟล์ขนาดเล็กจำนวนมหาศาล
- df (disk free)วิธีอ่านผลลัพธ์จากคำสั่ง df, เหตุผลที่ Use% อาจถึง 100% ก่อนที่ Avail จะเป็นศูนย์สำหรับผู้ใช้ทั่วไป และวิธีตรวจสอบ inode ด้วย df -i
แหล่งอ้างอิง
ตรวจสอบล่าสุด: