เรามีโฟลเดอร์แคชซึ่งมีขนาดใหญ่พอที่จะทำลายเซิร์ฟเวอร์โดยไม่ได้ตั้งใจ เรามี RAM 8 GB บนเซิร์ฟเวอร์และเมื่อฉันใช้งานง่าย rm
คำสั่งเพื่อลบไฟล์ทั้งหมดที่อยู่ในนั้นใช้ RAM ทั้งหมดและยังคงไม่ลบหลังจาก 5 ชั่วโมง
ดังนั้นเราจึงพยายามใช้ find
แต่มันก็ล้มเหลวเช่นกันหลังจากผ่านไป 12 ชั่วโมง ขณะนี้จาก 24 ชั่วโมงล่าสุด find
กับ perl
คำสั่งกำลังทำงานและโฟลเดอร์ยังไม่ถูกลบอันที่จริงไม่ใช่ไฟล์เดียวที่ถูกลบ
เมื่อเรา ls
โฟลเดอร์หลักจะแสดงขนาดโฟลเดอร์โดยรอบ 1GB
ฉันแค่สงสัยว่ามีกี่ล้านไฟล์มี
ดังนั้นคำถามของฉันมีวิธีใดบ้างที่เราสามารถลบไฟล์โดยไม่แสดงรายการดังนั้นเพียงแค่ลบโฟลเดอร์หรือไฟล์ภายในโดยไม่ทำรายการ (aka ไม่โทร getdir()
เช่นการเรียกระบบ)
ฉันกำลังพิจารณาที่จะฟอร์แมตเซิร์ฟเวอร์เพื่อกำจัดมันในตอนนี้
แก้ไข:
ฉันได้ใช้ find
กับ -delete
และด้วย -exec rm -f {}
EDIT2:
ขึ้นอยู่กับ บทความนี้ เรากำลังเรียกใช้คำสั่ง perl ในขณะนี้ (ดีประมาณ 24+ ชั่วโมงคำสั่งนั้นยังคงทำงานอยู่) แต่ไม่มีอะไรทำในขนาดโฟลเดอร์ที่เราเห็น
nice -n 18
(หรืออะไรก็ตาม) ก่อนที่คุณจะสามารถลดคำขอ CPU โปรดทราบว่าในหนึ่งในความคิดเห็นที่ระบุไว้rm -rf directory/
มันยังทำงานได้เร็วขึ้นสำหรับไฟล์หลายพันล้านไฟล์ในโฟลเดอร์เดียว ...