วิธีการหนึ่งพบว่าไฟล์ใดมีการใช้พื้นที่ถึง 80% ของพื้นที่บนเว็บเซิร์ฟเวอร์ Linux?


15

ไดรฟ์บรรจุอยู่ตลอดเวลา คุณได้ตามหาไฟล์สำรองและสุ่มทั้งหมดที่คุณสามารถทำได้ grep'd สำหรับไฟล์ coredump และลบบางส่วนของการสำรองข้อมูลที่ไม่ต้องการ ...

อะไรจะเป็นท่าต่อไปของคุณ

เซิร์ฟเวอร์จริงที่สงสัยนั้นมีไฟล์เว็บไซต์ 10GB และระบบปฏิบัติการไม่ควรใช้เกินกว่า 10GB ดังนั้นคุณจะติดตามได้อย่างไรว่าอะไรที่เต็มไปด้วยไดรฟ์ 50GB (เสมือน)


คำตอบ:


9

ฉันพบว่า ncdu ( http://dev.yorhel.nl/ncdu ) มีประโยชน์มากสำหรับสิ่งนี้


สมบูรณ์ อินเตอร์เฟซที่ยอดเยี่ยมและความสามารถในการจัดการไฟล์จากภายในโปรแกรม ไชโย!
Gareth

23

แน่นอนมีวิธีที่ซับซ้อนมากขึ้น แต่วิธีที่ฉันจำได้คือ

du - max-depth = 1 -h /

ตอนนี้ใช้ไดเรกทอรีที่ใช้พื้นที่มากที่สุด(du --max-depth=1 -h /yourdir)และลึกลงไปจนกว่าคุณจะพบผู้กระทำผิดของคุณ
หากคุณต้องการเรียงลำดับตามขนาดและไม่สนใจรูปแบบที่มนุษย์อ่านได้คุณก็สามารถทำได้du --max-depth=1 /your_dir | sort -n


ใช่. ฉันทำสิ่งเดียวกัน "du -S | sort -n -r | less" ฉันชอบที่จะเห็นโปรแกรมที่ดูเหมือน htop และ cron ต้องการ mlocate แต่เมื่อวิ่งให้ข้อมูลที่ถูกต้องและร่วมสมัยเกี่ยวกับไฟล์ในระบบของคุณ
Gareth

1
แทนที่จะเริ่มจาก / บนเว็บเซิร์ฟเวอร์ให้ลองเริ่มจาก http_root หากไม่ประสบความสำเร็จก็สามารถเลือก '/' ได้ ไดเรกทอรีที่ทำงานอยู่บน '/' จะใช้เวลานาน
Saurabh Barjatiya

4

ฉันใช้โปรแกรม Gnome baobab คุณสามารถรันสิ่งนี้บนเดสก์ท็อปของคุณและไม่สามารถเชื่อมต่อผ่าน SSH ไปยังเซิร์ฟเวอร์ได้ มันแสดงให้เห็นถึงแผนที่กราฟิกที่อ่านง่ายของการใช้พื้นที่ดิสก์ มันถูกติดตั้งภายใต้ Gnome ในฐานะ "เครื่องมือวิเคราะห์การใช้ดิสก์"


3

ให้GT5ลอง


ฉันสองสิ่งนี้มันยอดเยี่ยมมากสำหรับการติดตามว่าที่ว่างกำลังจะไปเพราะมันแสดงให้เห็นต่างออกไป
34929 Josh Josh

น่ารัก นี่ควรเป็นคำตอบที่ถูกต้อง มันสุดยอดมาก ขอบคุณ
PKHunter

2

df -k แสดง fs ที่เป็นปัญหา จากนั้น cd ไปที่ระดับสูงสุด dir สำหรับมันและเรียกใช้ du -xk | เรียง -n | tail -25 จะแสดง 25 dir อันดับแรกเรียงลำดับสำหรับอาทิตย์ 9 หรือก่อนหน้าแทนที่ x ด้วย a


ใช่คล้ายกับสิ่งที่ฉันเพิ่งพูดถึงในคำตอบของ @Marie Fischer ทำไมถึงใช้ -k (ขนาดบล็อก) แทนการใช้ -h สำหรับมนุษย์?
Gareth

-k ถูกใช้เพื่อให้รายงานทุกขนาดเป็น kb สิ่งนี้มีประโยชน์สำหรับการเรียงลำดับอื่น ๆ จะวาง 10kb ก่อน 20mb ในขณะที่เรียงลำดับ
Saurabh Barjatiya

1

โปรดทราบว่าไฟล์สามารถลบได้ในขณะที่ยังเขียนอยู่ดังนั้นจึงใช้พื้นที่ดิสก์ในขณะที่กระบวนการสร้างกำลังทำงาน แต่ไม่มีชื่อไฟล์

ทำให้ไม่สามารถใช้เครื่องมือปกติได้ - คุณสามารถใช้ lsof เพื่อตรวจสอบว่ากระบวนการใดมีไฟล์เปิดอยู่


ฉันใช้/usr/sbin/lsof | grep deletedเพื่อรับสิ่งนี้
เควินเอ็ม

0

หากคุณสามารถเรียกใช้ซอฟต์แวร์ในระบบได้xdiskusageจะแสดงกราฟิกให้คุณเห็นว่าไดเรคทอรี / ไฟล์ใดที่กินพื้นที่ของคุณ มีประโยชน์อย่างยิ่ง

ฉันเชื่อว่า KDE มีบางสิ่งที่คล้ายกัน

หากเป็นข้อความเท่านั้นและคุณไม่สามารถติดตั้งซอฟต์แวร์เพิ่มเติมได้การใช้งานที่สร้างสรรค์duก็น่าจะช่วยให้คุณไปถึงที่นั่นด้วยเช่นกัน


0
  1. cd ไปยังโฮมไดเร็กตอรี่ของเซิร์ฟเวอร์เว็บ (โฮมไดเร็กตอรี่ของ apache)
  2. เรียกใช้คำสั่ง "du -a | head -30 | sort -nr"
  3. มันจะให้ 30 ไฟล์ / ไดเรกทอรีดิสก์ที่ใหญ่ที่สุด
  4. คุณสามารถค้นหาและลบได้ (หากไม่เป็นประโยชน์)

นี้จะไม่ทำงานเว้นแต่คุณจะเปลี่ยนคำสั่งของและhead sortนอกจากนี้คุณควรใช้ประโยชน์จากคุณสมบัติการจัดรูปแบบ
kasperd

0

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อค้นหาไฟล์หรือโฟลเดอร์ที่มีเนื้อที่มากเกินไป

เช่นเพื่อแสดงไดเรกทอรีที่ใหญ่ที่สุด 20 อันดับแรกในโฟลเดอร์ปัจจุบันให้ใช้หนึ่งบรรทัดต่อไปนี้:

du -ah . | sort -rh | head -20

หรือ:

du -a . | sort -rn | head -20

สำหรับไฟล์ที่ใหญ่ที่สุด 20 อันดับแรกในไดเรกทอรีปัจจุบัน (เรียกซ้ำ):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

หรือขนาดที่มนุษย์อ่านได้:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

คำสั่งที่สองในการทำงานใน OSX / BSD ถูกต้อง (ตามsortไม่ได้-h), คุณจำเป็นต้องติดตั้งจากsort แล้วเพิ่มช่องเก็บโฟลเดอร์ที่คุณcoreutilsPATH

คุณสามารถกำหนดคำสั่งเหล่านี้เป็นนามแฝง (เช่นเพิ่มลงในไฟล์rcของคุณเช่น.bash_profile):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

จากนั้นเรียกใช้bigหรือbig-filesภายในโฟลเดอร์ที่คุณคิดว่าเกิดขึ้น (เช่นใน/home)


0

นี่คือบางสิ่งที่ฉันใช้ร่วมกันเพื่อติดตามกระบวนการโกงบางอย่างบนเซิร์ฟเวอร์ฐานข้อมูลของเรา: Rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

มันเป็น kludgey และไม่ค่อยแข็งแกร่ง แต่ก็ใช้งานได้:

  1. สร้างรายการต้นไม้ซ้ำของไดเรกทอรีปัจจุบัน
  2. รอ 5 วินาที
  3. สร้างรายการอื่น
  4. เปรียบเทียบเอาต์พุตทั้งสอง
  5. ผสมไฟล์ที่มีการเปลี่ยนแปลงขนาดและ
  6. ps -lFp จะแสดงไฟล์ที่กระบวนการเป็นเจ้าของ

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.