नीचे ट्रैकिंग जहां डिस्क स्थान लिनक्स पर चला गया है?


532

लिनक्स सिस्टम का प्रशासन करते समय मैं अक्सर अपने आप को एक विभाजन के पूर्ण होने के बाद अपराधी को ट्रैक करने के लिए संघर्ष करते हुए पाता हूं। मैं आम तौर पर उपयोग करता हूं, du / | sort -nrलेकिन किसी भी परिणाम के वापस आने से पहले एक बड़े फाइल सिस्टम पर एक लंबा समय लगता है।

इसके अलावा, यह आमतौर पर सबसे खराब अपराधी को उजागर करने में सफल होता है, लेकिन मैंने अक्सर खुद को अधिक सूक्ष्म मामलों के duबिना सहारा लिया है sortऔर फिर आउटपुट के माध्यम से पता लगाना पड़ा।

मैं एक कमांड लाइन समाधान पसंद करता हूं जो मानक लिनक्स कमांडों पर निर्भर करता है क्योंकि मुझे काफी कुछ सिस्टम को प्रशासित करना पड़ता है और नया सॉफ्टवेयर स्थापित करना एक परेशानी है (विशेषकर जब डिस्क स्थान से बाहर!)


1
@ यहां पदों को बेहतर बनाने के लिए समय निकालने के लिए धन्यवाद, लेकिन क्या मैं आपको टैग जोड़ते समय थोड़ा और ध्यान रखने के लिए कह सकता हूं? टैग दृश्यता के लिए नहीं हैं, वे प्रश्न का वर्णन करते हैं। यहां डिस्क टैग उपयुक्त नहीं है (इसका टैग विवरण देखें), और आपके द्वारा सुझाए गए संपादन में कम से कम दो टैग वहाँ उपयुक्त नहीं थे (काली डेबियन नहीं है, और इसमें कोई पीपीए शामिल नहीं हैं)।
स्टीफन किट

जवाबों:


614

प्रयास करें ncdu, एक उत्कृष्ट कमांड-लाइन डिस्क उपयोग विश्लेषक:

यहां छवि विवरण दर्ज करें


6
आमतौर पर, मैं एक साधारण मुद्दे को हल करने के लिए कुछ स्थापित करने के लिए कहा जा रहा से नफरत है, लेकिन यह सिर्फ महान है।
18

14
sudo apt install ncduubuntu पर यह आसानी से मिल जाता है। यह महान है
ओरियन एडवर्ड्स

10
आप शायद यह जानते हैं कि कौन सी फाइलसिस्टम स्थान की कमी है। जिस स्थिति में आप ncdu -xकेवल फ़ाइलों और निर्देशिकाओं को उसी फ़ाइल सिस्टम पर गिनने के लिए उपयोग कर सकते हैं जैसे कि निर्देशिका स्कैन की जा रही है।
ल्यूक कजिन्स

7
सबसे बढ़िया उत्तर। यह भी: sudo ncdu -rx /केवल रूट एरिया ड्राइव पर सबसे बड़ी डायर / फाइलों पर एक साफ रीड देना चाहिए। ( -r= रीड-ओनली, -x = एक ही फाइलसिस्टम पर बने रहें (मतलब: अन्य फाइलसिस्टम माउंट को ट्रेस न करें))
bshea

5
मेरे पास इतनी कम जगह है कि मैं ncdu
क्रिस

338

सीधे मत जाओ du /dfउस विभाजन को खोजने के लिए उपयोग करें जो आपको नुकसान पहुंचा रहा है, और फिर duकमांड का प्रयास करें।

एक मैं कोशिश करना पसंद है

# U.S.
du -h <dir> | grep '[0-9\.]\+G'
# Others
du -h <dir> | grep '[0-9\,]\+G'

क्योंकि यह "मानव पठनीय रूप" में आकार देता है। जब तक आपको वास्तव में छोटे विभाजन नहीं मिले हैं, गीगाबाइट में निर्देशिकाओं के लिए तैयारी करना जो आप चाहते हैं उसके लिए एक बहुत अच्छा फिल्टर है। यह आपको कुछ समय लेगा, लेकिन जब तक आप कोटा स्थापित नहीं करते हैं, मुझे लगता है कि यह सिर्फ उसी तरह है जैसे यह होने जा रहा है।

जैसा कि @jchavannes टिप्पणियों में बताते हैं, यदि आप बहुत अधिक झूठी सकारात्मक खोज कर रहे हैं, तो अभिव्यक्ति अधिक सटीक हो सकती है। मैंने सुझाव को शामिल किया, जो इसे बेहतर बनाता है, लेकिन अभी भी गलत सकारात्मक हैं, इसलिए बस ट्रेडऑफ़ हैं (सरल एक्सपायर, बदतर परिणाम; अधिक जटिल और लंबा एक्सप, बेहतर परिणाम)। यदि आपके पास अपने आउटपुट में बहुत कम निर्देशिकाएं हैं, तो अपने रेगेक्स को तदनुसार समायोजित करें। उदाहरण के लिए,

grep '^\s*[0-9\.]\+G'

और भी सटीक है (कोई <1GB निर्देशिकाओं को सूचीबद्ध नहीं किया जाएगा)।

यदि आप कर कोटा है, तो आप उपयोग कर सकते हैं

quota -v

उन उपयोगकर्ताओं को खोजने के लिए जो डिस्क को हॉगिंग कर रहे हैं।


2
यह बहुत जल्दी, सरल और व्यावहारिक है
zzapper

24
grep '[0-9]G'बहुत सारी झूठी सकारात्मकताएं समेटे हुए और किसी भी दशमलव को छोड़ दिया। इसने मेरे लिए बेहतर काम किया:sudo du -h / | grep -P '^[0-9\.]+G'
jchavannes

1
यदि आपके पास वास्तव में बड़ी निर्देशिकाएं हैं, तो आप [GT]बस के बजाय चाहते हैंG
विट्रुवियस

1
क्या कोई ऐसा उपकरण है जो फाइल सिस्टम में सभी निर्देशिकाओं (लेज़ीली) पर लगातार डिस्क के उपयोग की निगरानी करेगा? कुछ ऐसा जिसे वेब UI पर स्ट्रीम किया जा सकता है? अधिमानतः नरम-वास्तविक समय की जानकारी।
CMCDragonkai

20
मुझे उपयोग करना पसंद हैdu -h | sort -hr | head
अगस्त १ar

104

पहली बार देखने के लिए, "सारांश" दृश्य का उपयोग करें du:

du -s /*

इसका प्रभाव इसके प्रत्येक तर्क के आकार, यानी ऊपर के मामले में प्रत्येक रूट फ़ोल्डर को प्रिंट करना है।

इसके अलावा, GNUdu और BSDdu दोनों को गहराई से प्रतिबंधित किया जा सकता है ( लेकिन POSIX duनहीं! ):

  • GNU (लिनक्स,…):

    du --max-depth 3
  • BSD (macOS,…):

    du -d 3
    

यह आउटपुट डिस्प्ले को गहराई तक सीमित करेगा । गणना की गई और प्रदर्शित आकार अभी भी पूरी गहराई का कुल है, ज़ाहिर है। लेकिन इसके बावजूद, प्रदर्शन की गहराई को सीमित करने से गणना में तेजी आती है।

"मानव-पठनीय" आउटपुट (यानी KiB, MiB इत्यादि का उपयोग करके) के लिए एक अन्य सहायक विकल्प -h(GNU और BSD दोनों पर एक बार फिर, POSIX-only पर नहीं du) शब्द हैं ।


23
अगर लगातार कोशिश करने की duशिकायत है । -d--max-depth 5
ReactiveRaven

8
महान अन्वेषक। मेरे लिए सही लगता है। मैं सुझाव देता हूं du -hcd 1 /directory। मानव पठनीय के लिए-ग, गहराई के लिए कुल और घ के लिए।

मैं उपयोग कर रहा हूँdu -hd 1 <folder to inspect> | sort -hr | head
jonathanccalixto

du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | headफ़िल्टर करने के लिए अनुमति अस्वीकृत
srghma

49

आप निम्न कमांड भी चला सकते हैं du:

~# du -Pshx /* 2>/dev/null
  • -sविकल्प को सारांशित और प्रदर्शित करता है प्रत्येक तर्क के लिए कुल।
  • h प्रिंट्स Mio, Gio, आदि।
  • x = एक फाइलसिस्टम (बहुत उपयोगी) में रहें।
  • P = सीमलिंक का पालन न करें (जो उदाहरण के लिए दो बार फाइलों को गिना जा सकता है)।

सावधान रहें, /rootनिर्देशिका नहीं दिखाई जाएगी, आपको इसे ~# du -Pshx /root 2>/dev/nullप्राप्त करने के लिए दौड़ना होगा (एक बार, मैंने बहुत संघर्ष किया कि यह इंगित न करें कि मेरी /rootनिर्देशिका पूरी हो गई थी)।

संपादित करें: सही विकल्प -


2
du -Pshx .* * 2>/dev/null+ छिपी / प्रणाली निर्देशिका
Mykhaylo Adamovych

27

फाइलसिस्टम पर सबसे बड़ी फाइलें ढूंढना हमेशा एक लंबा समय लगता है। परिभाषा के अनुसार आपको बड़ी फ़ाइलों की तलाश में पूरे फाइलसिस्टम को पार करना होगा। एकमात्र समाधान संभवतः आपके सभी सिस्टम पर एक क्रॉन जॉब को चलाने के लिए है ताकि समय से पहले फाइल तैयार हो सके।

एक अन्य बात, du का x विकल्प दुसरे फाइलसिस्टम में आरोह बिंदुओं के बाद डु रखने के लिए उपयोगी है। अर्थात:

du -x [path]

पूर्ण कमांड जो मैं आमतौर पर चलाता हूं वह है:

sudo du -xm / | sort -rn > usage.txt

इसका -mमतलब मेगाबाइट में वापसी परिणाम है, और sort -rnपहले सबसे बड़ी संख्या में परिणाम सॉर्ट करेगा। आप एक संपादक में उपयोग कर सकते हैं। इसके बाद, और सबसे बड़ा फ़ोल्डर (/ के साथ शुरू) शीर्ष पर होगा।


3
-xझंडे को इंगित करने के लिए धन्यवाद !
SamB

1
"सबसे बड़ी खोज में लंबा समय लगता है .." -> वैसे यह निर्भर करता है, लेकिन असहमत होते हैं: उपयोगिताओं के साथ उस लंबे समय तक नहीं लेते हैं जैसे ncdu- कम से कम जल्दी ( duया findगहराई और तर्कों के आधार पर) ..
bshea

चूँकि मैं जड़ नहीं बनना पसंद करता हूँ, मुझे उस जगह को अनुकूलित करना होगा जहाँ फ़ाइल लिखी गई है:sudo du -xm / | sort -rn > ~/usage.txt
ब्रूनो

20

मैं हमेशा उपयोग करता हूं du -sm * | sort -n, जो आपको एक क्रमबद्ध सूची देता है कि mebibytes में वर्तमान कार्य निर्देशिका के उपनिर्देशिका का कितना उपयोग होता है।

आप कोनकेरर को भी आज़मा सकते हैं, जिसमें "आकार दृश्य" मोड है, जो विंडोज पर WinDirStat के समान है: यह आपको एक viual प्रतिनिधित्व देता है कि कौन सी फाइलें / निर्देशिका आपके अधिकांश स्थान का उपयोग करती हैं।

अपडेट: अधिक हाल के संस्करणों पर, आप उपयोग भी कर सकते हैं du -sh * | sort -hजो मानव-पठनीय फ़ाइलों को दिखाएगा और उन लोगों द्वारा सॉर्ट करेगा। (संख्या K, M, G, ... के साथ प्रत्यय दी जाएगी)

KDE3 के कोनेकर फ़ाइल आकार दृश्य के विकल्प की तलाश कर रहे लोगों के लिए, फ़िलाइट पर एक नज़र डाल सकते हैं, हालांकि यह बहुत अच्छा नहीं है।


हालांकि यह केवल कॉन्करर 3.x है - फ़ाइल आकार दृश्य अभी भी KDE4 में पोर्ट नहीं किया गया है।

'डु -श * | सॉर्ट -h 'मेरे लिनक्स (सेंटोस डिस्ट्रो) बॉक्स पर पूरी तरह से काम करता है। धन्यवाद!
पहरयोगी

18

मैं इसका उपयोग वर्तमान निर्देशिका के शीर्ष 25 सबसे खराब अपराधियों के लिए करता हूं

# -S to not include subdir size, sorted and limited to top 25
du -S . | sort -nr | head -25

इस कमांड ने एक छिपे हुए फ़ोल्डर को खोजने के लिए चाल चली जो समय के साथ आकार में बढ़ती दिख रही थी। धन्यवाद!
thegreendroid

क्या यह बाइट्स में है?
यूजर

डिफ़ॉल्ट रूप से, मेरे सिस्टम पर, 'du -S' एक अच्छा मानव पठनीय आउटपुट देता है। आपको छोटी फ़ाइलों के लिए बाइट्स की एक सादे संख्या मिलती है, फिर बड़ी फ़ाइलों के लिए 'KB' या 'MB' प्रत्यय के साथ एक संख्या।
सर्ग 10

आप मानव पठनीय आउटपुट प्राप्त करने के लिए डु -श कर सकते हैं।
सिद्धार्थ

@ सिद्धार्थ यदि आप जोड़ते हैं -h, तो यह निश्चित रूप से sort -nrकमांड के प्रभाव को बदल देगा - अर्थात सॉर्ट अब काम नहीं करेगा, और फिर headकमांड भी अब काम नहीं करेगा
क्लेयर मैके

14

पिछली कंपनी में हम एक क्रॉन जॉब करते थे जो रात भर चलती थी और एक निश्चित आकार में किसी भी फाइल को पहचानती थी, जैसे

find / -size + 10000k

आप उन निर्देशिकाओं के बारे में और अधिक चयनात्मक होना चाहते हैं जिन्हें आप खोज रहे हैं, और किसी भी दूरस्थ माउंटेड ड्राइव के लिए देख सकते हैं जो ऑफ़लाइन हो सकती हैं।


आप खोज के -x विकल्प का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि आपको अपने खोज कमांड के प्रारंभ बिंदु की तुलना में अन्य उपकरणों पर फाइलें न मिलें। यह दूरस्थ रूप से माउंटेड ड्राइव समस्या को ठीक करता है।
rjmunro

10

एक विकल्प यह होगा कि आप अपने ड्यू / सॉर्ट कमांड को क्रोन जॉब, और फाइल में आउटपुट के रूप में चलाएं, इसलिए यह तब होता है जब आपको इसकी आवश्यकता होती है।


9

कमांडलाइन के लिए मुझे लगता है कि डु / सॉर्ट विधि सबसे अच्छी है। यदि आप एक सर्वर पर नहीं हैं, तो आपको Baobab - डिस्क उपयोग विश्लेषक पर एक नज़र रखना चाहिए । इस कार्यक्रम को चलने में कुछ समय लगता है, लेकिन आप आसानी से उप निर्देशिका को गहरे, गहरे नीचे पा सकते हैं जहां सभी पुराने लिनक्स आईएसओ हैं।


2
यह SSH, FTP, SMB और WebDAV के माध्यम से दूरस्थ फ़ोल्डरों को भी स्कैन कर सकता है।

यह भी खूब रही। कुछ चीजें सिर्फ उन्हें कल्पना करने के लिए जीयूआई के साथ बेहतर काम करती हैं, और यह उनमें से एक है! मुझे CrashPlan के लिए अपने सर्वर पर किसी भी तरह से एक्स-सर्वर की आवश्यकता है, इसलिए यह उस पर भी काम करता है।
तैमूर

9

मैं उपयोग करता हूं

du -ch --max-depth=2 .

और मैं अपनी आवश्यकताओं के अनुरूप अधिकतम गहराई को बदल देता हूं। "C" विकल्प फ़ोल्डरों के लिए टोटल प्रिंट करता है और "h" ऑप्शन के रूप में K, M या G में साइज को प्रिंट करता है। जैसा कि दूसरों ने कहा है, यह अभी भी सभी निर्देशिकाओं को स्कैन करता है, लेकिन यह आउटपुट को इस तरह से सीमित करता है कि मुझे बड़ी निर्देशिकाओं को ढूंढना आसान लगता है।


9

मैं दूसरे नंबर पर जा रहा हूं xdiskusage। लेकिन मैं नोट में जोड़ने जा रहा हूं कि यह वास्तव में डु फ्रंटेंड है और किसी फाइल से डू आउटपुट पढ़ सकता है। तो आप du -ax /home > ~/home-duअपने सर्वर पर, scpफ़ाइल वापस चला सकते हैं , और फिर इसे रेखांकन का विश्लेषण कर सकते हैं। या इसे ssh के माध्यम से पाइप करें।


6

एक सरल awk script में du के आउटपुट को फीड करने की कोशिश करें जो यह देखने के लिए जांचता है कि क्या निर्देशिका का आकार कुछ सीमा से बड़ा है, यदि वह इसे प्रिंट करता है। आपको जानकारी प्राप्त करने से पहले पूरे पेड़ का पता लगाने की प्रतीक्षा करने की आवश्यकता नहीं है (बनाम अन्य उत्तरों में से कई)।

उदाहरण के लिए, निम्नलिखित किसी भी निर्देशिका को प्रदर्शित करता है जो लगभग 500 एमबी से अधिक खपत करता है।

du -kx / | awk '{ if ($1 > 500000) { print $0} }'

उपरोक्त को थोड़ा और पुन: प्रयोज्य बनाने के लिए, आप अपने .bashrc में एक फ़ंक्शन को परिभाषित कर सकते हैं, (या आप इसे स्टैंडअलोन स्क्रिप्ट में बना सकते हैं)।

dubig() {
    [ -z "$1" ] && echo "usage: dubig sizethreshMB [dir]" && return
    du -kx $2 | awk '{ if ($1 > '$1'*1024) { print $0} }'
}

तो dubig 200 ~/200 से अधिक एमबी का उपयोग करने वाली निर्देशिकाओं के लिए होम डाइरेक्टरी (डिवाइस से सहानुभूति का पालन किए बिना) के तहत दिखता है।


यह अफ़सोस की बात है कि एक दर्जन से अधिक जीआरपी हैक हैं। ओह और du -kयह पूरी तरह से निश्चित कर देगा कि डु
ndemou

-K के बारे में अच्छा विचार है। संपादित।
बजे मार्क बोरगेरिंग

यहां तक ​​कि सरल और अधिक मजबूत: du -kx $2 | awk '$1>'$(($1*1024))(यदि आप डिफ़ॉल्ट कार्रवाई को print $0
जगाने के

अच्छी बात @ date_thompson_085 जाग के सभी संस्करणों के लिए यह सच है, मुझे पता है (नेट / फ्री-बीएसडी और जीएनयू)। @ मार्क-बोरिंगिंग का मतलब यह है कि आप अपने पहले उदाहरण को बहुत सरल कर सकते हैंdu -kx / | awk '$1 > 500000'
ndemou

@ मार्क-बोरर्जिंग: यदि आपके पास बस कुछ kBytes बचा है तो आप इस तरह से डू का पूरा आउटपुट भी रख सकते हैं du -kx / | tee /tmp/du.log | awk '$1 > 500000'। यह बहुत मददगार है क्योंकि यदि आपका पहला फ़िल्टरिंग बेकार हो जाता है तो आप इस तरह के अन्य मूल्यों की कोशिश कर सकते हैं awk '$1 > 200000' /tmp/du.logया इस तरह से संपूर्ण आउटपुट का निरीक्षण कर सकते हैं जैसे sort -nr /tmp/du.log|lessपूरे फाइलसिस्टम को फिर से स्कैन किए बिना
ndemou

4

मुझे अच्छे पुराने xdiskusage को du (1) के चित्रमय विकल्प के रूप में पसंद है ।


प्रश्न के इस भाग पर ध्यान दें: "मैं एक कमांड लाइन समाधान पसंद करूंगा जो कि मानक लिनक्स कमांड पर निर्भर करता है ..."
ndemou

4

मैं एक सिंहावलोकन पाने के लिए और वहां से नीचे ड्रिल करने के लिए निम्नलिखित का उपयोग करना पसंद करता हूं ...

cd /folder_to_check
du -shx */

यह मानव पठनीय आउटपुट जैसे GB, MB के साथ परिणाम प्रदर्शित करेगा। यह दूरस्थ फाइल सिस्टम के माध्यम से ट्रैवर्सिंग को भी रोकेगा। -sविकल्प केवल प्रत्येक फ़ोल्डर ताकि आप यदि किसी फ़ोल्डर की अधिक जानकारी के में रुचि और ड्रिल-डाउन कर सकते हैं पाया की सारांश दिखाता है। ध्यान रखें कि यह समाधान केवल फ़ोल्डर्स दिखाएगा ताकि आप तारांकन के बाद / यदि आप फ़ाइलें भी चाहते हैं तो छोड़ना चाहेंगे।


4

यहां उल्लेख नहीं किया गया है लेकिन आपको नष्ट / लटकी हुई फाइलों के मामले में भी lsof की जांच करनी चाहिए। मेरे पास एक 5.9GB डिलीट tmp फाइल एक रन दूर cronjob से थी।

https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage ने मुझे उक्त फ़ाइल (क्रोन) के प्रक्रिया स्वामी को खोजने में मदद की और फिर मैं /proc/{cron id}/fd/{file handle #}फ़ाइल को कम करने में सक्षम हो गया प्रश्न दूर भागने की शुरुआत पाने के लिए, इसका समाधान करें, और फिर गूंज ""> स्थान खाली करने के लिए फ़ाइल करें और क्रोन को इनायत से खुद को बंद करने दें।


3

टर्मिनल से, आप ड्यूट्री के साथ डिस्क उपयोग का एक दृश्य प्रतिनिधित्व प्राप्त कर सकते हैं

यह बहुत तेज और हल्का है क्योंकि यह रस्ट में कार्यान्वित किया जाता है

dutree

$ dutree -h
Usage: dutree [options] <path> [<path>..]

Options:
    -d, --depth [DEPTH] show directories up to depth N (def 1)
    -a, --aggr [N[KMG]] aggregate smaller than N B/KiB/MiB/GiB (def 1M)
    -s, --summary       equivalent to -da, or -d1 -a1M
    -u, --usage         report real disk usage instead of file size
    -b, --bytes         print sizes in bytes
    -f, --files-only    skip directories for a fast local overview
    -x, --exclude NAME  exclude matching files or directories
    -H, --no-hidden     exclude hidden files
    -A, --ascii         ASCII characters only, no colors
    -h, --help          show help
    -v, --version       print version number

वेबसाइट में उपयोग के सभी विवरण देखें


2

कमांड लाइन डु (और यह विकल्प है) के लिए सबसे अच्छा तरीका लगता है। डिस्कहॉग ऐसा लगता है कि यह एक क्रॉन जॉब से भी डु / डीएफ जानकारी का उपयोग करता है इसलिए पीटर का सुझाव शायद सरल और प्रभावी का सबसे अच्छा संयोजन है।

( FileLight और KDirStat GUI के लिए आदर्श हैं।)


2

आप मानक उपकरण का उपयोग कर सकते हैं findऔर sortअपने डिस्क स्थान उपयोग का विश्लेषण करने के लिए।

सूची निर्देशिका उनके आकार द्वारा क्रमबद्ध:

find / -mount -type d -exec du -s "{}" \; | sort -n

सूची फ़ाइलों को उनके आकार के अनुसार क्रमबद्ध करें:

find / -mount -printf "%k\t%p\n" | sort -n

1
मुझे यह सबसे अच्छा उत्तर लगता है, क्रमबद्ध क्रम में बड़े आकार का पता लगाने के लिए
विमल कृष्ण

2

शायद यह ध्यान देने योग्य है कि mc(मिडनाइट कमांडर, एक क्लासिक टेक्स्ट-मोड फ़ाइल मैनेजर) डिफ़ॉल्ट रूप से केवल निर्देशिका इनोड्स का आकार दिखाता है (आमतौर पर 4096) लेकिन CtrlSpaceमेनू टूल्स के साथ या आप मानव पठनीय में चयनित निर्देशिका द्वारा कब्जा किए गए स्थान को देख सकते हैं। प्रारूप (जैसे, कुछ पसंद 103151M)।

उदाहरण के लिए, नीचे दी गई तस्वीर 2018 और 2017 के वनीला टीएक्स लाइव डिस्ट्रीब्यूशन के पूर्ण आकार को दिखाती है, जबकि 2015 और 2016 के संस्करण केवल इनोड के आकार को दिखाते हैं (लेकिन उनके पास वास्तव में 5 जीबी के करीब है)।

यही है, CtrlSpaceएक के लिए एक किया जाना चाहिए, केवल वास्तविक निर्देशिका स्तर के लिए, लेकिन यह बहुत तेज़ और आसान है जब आप इसके साथ नेविगेट कर रहे हैं mcतो शायद आपको ज़रूरत नहीं होगी ncdu(यह वास्तव में, केवल इस उद्देश्य के लिए बेहतर है)। अन्यथा, आप ncduसे भी चला सकते हैं mc। किसी mcअन्य टर्मिनल से बाहर निकलने या लॉन्च किए बिना ।

मेगावाट


1

सबसे पहले मैं निर्देशिकाओं के आकार की जाँच करता हूँ, जैसे:

du -sh /var/cache/*/

1

यदि आप जानते हैं कि पिछले कुछ दिनों में बड़ी फ़ाइलों को जोड़ा गया है (जैसे, 3), तो आप ls -ltraहाल ही में जोड़े गए फ़ाइलों की खोज करने के लिए " " के साथ संयोजन में एक कमांड का उपयोग कर सकते हैं :

find /some/dir -type f -mtime -3 -exec ls -lart {} \;

यह आपको केवल फाइलें (" -type f") देगा, निर्देशिका नहीं; पिछले 3 दिनों (" -mtime -3") में संशोधन के समय वाली फाइलें और ls -lartप्रत्येक मिली फाइल (" -exec" भाग) के खिलाफ " " निष्पादित करें ।


1

डिस्क स्थान को असम्बद्ध करने के लिए यह समझना महत्वपूर्ण है कि रूट डाइरेक्टरी को शुरू करना और अपने सबसे बड़े बच्चों में से कुछ के लिए चलना उपयोगी है।

हम यह कर सकते हैं

  • फ़ाइल में डु के आउटपुट को सहेजना
  • परिणाम के माध्यम से मनोरंजक

अर्थात्:

# sum up the size of all files and directories under the root filesystem
du -a -h -x / > disk_usage.txt
# display the size of root items
grep $'\t/[^/]*$' disk_usage.txt

अब कहते हैं / usr बहुत बड़े दिखाई देते हैं

# display the size of /usr items
grep $'\t/usr/[^/]*$' disk_usage.txt

अब अगर / usr / स्थानीय संदिग्ध रूप से बड़ा है

# display the size /usr/local items
grep $'\t/usr/local/[^/]*$' disk_usage.txt

और इसी तरह...


1

मैंने इस कमांड का इस्तेमाल 100Mb से बड़ी फ़ाइलों को खोजने के लिए किया है:

find / -size +100M -exec ls -l {} \;

0

मुझे सफलता मिली है कि हम सबसे खराब अपराधी को ट्रैक कर रहे हैं duऔर मानव पठनीय रूप में आउटपुट को पाइप कर रहे हैं egrepऔर नियमित अभिव्यक्ति से मेल खाते हैं।

उदाहरण के लिए:

du -h | egrep "[0-9]+G.*|[5-9][0-9][0-9]M.*"

जो आपको 500 मेग या उच्चतर सब कुछ वापस दे।


अंकगणित संचालन के लिए grep का उपयोग न करें - इसके बजाय awk का उपयोग करें du -k | awk '$1 > 500000':। पहली कोशिश में समझने, संपादित करने और सही होने में बहुत आसान है।
ndemou

0

यदि आप गति चाहते हैं, तो आप उन फ़ाइल सिस्टम पर कोटा सक्षम कर सकते हैं जिन्हें आप मॉनिटर करना चाहते हैं (आपको किसी उपयोगकर्ता के लिए कोटा निर्धारित करने की आवश्यकता नहीं है), और एक स्क्रिप्ट का उपयोग करें जो प्रत्येक उपयोगकर्ता द्वारा उपयोग किए जा रहे डिस्क स्थान को सूचीबद्ध करने के लिए कोटा कमांड का उपयोग करता है। उदाहरण के लिए:

quota -v $user | grep $filesystem | awk '{ print $2 }'

आपको विशेष फ़ाइल सिस्टम पर विशेष उपयोगकर्ता के लिए ब्लॉकों में डिस्क का उपयोग करना होगा। आप इस तरह से सेकंड के एक मामले में usages की जाँच करने में सक्षम होना चाहिए।

कोटा को सक्षम करने के लिए आपको अपने / etc / fstab फ़ाइल में फाइलसिस्टम विकल्प में usrquota जोड़ने की आवश्यकता होगी और फिर संभवतः रीबूट करें ताकि कोटा को कॉल करने से पहले quotacheck को निष्क्रिय फ़ाइल सिस्टम पर चलाया जा सके।


0

यहां एक छोटा ऐप है जो किसी भी डिस्क या निर्देशिका में ट्यूमर को खोजने के लिए गहरे नमूने का उपयोग करता है। यह निर्देशिका के पेड़ को दो बार चलाता है, एक बार इसे मापने के लिए, और दूसरी बार निर्देशिका के तहत 20 "यादृच्छिक" बाइट्स के लिए पथ प्रिंट करने के लिए।

void walk(string sDir, int iPass, int64& n, int64& n1, int64 step){
    foreach(string sSubDir in sDir){
        walk(sDir + "/" + sSubDir, iPass, n, n1, step);
    }
    foreach(string sFile in sDir){
        string sPath = sDir + "/" + sFile;
        int64 len = File.Size(sPath);
        if (iPass == 2){
            while(n1 <= n+len){
               print sPath;
               n1 += step;
            }
        }
        n += len;
    }
}

void dscan(){
    int64 n = 0, n1 = 0, step = 0;
    // pass 1, measure
    walk(".", 1, n, n1);
    print n;
    // pass 2, print
    step = n/20; n1 = step/2; n = 0;
    walk(".", 2, n, n1);
    print n;
}

आउटपुट मेरे प्रोग्राम फ़ाइल निर्देशिका के लिए इस तरह दिखता है:

 7,908,634,694
.\ArcSoft\PhotoStudio 2000\Samples\3.jpg
.\Common Files\Java\Update\Base Images\j2re1.4.2-b28\core1.zip
.\Common Files\Wise Installation Wizard\WISDED53B0BB67C4244AE6AD6FD3C28D1EF_7_0_2_7.MSI
.\Insightful\splus62\java\jre\lib\jaws.jar
.\Intel\Compiler\Fortran\9.1\em64t\bin\tselect.exe
.\Intel\Download\IntelFortranProCompiler91\Compiler\Itanium\Data1.cab
.\Intel\MKL\8.0.1\em64t\bin\mkl_lapack32.dll
.\Java\jre1.6.0\bin\client\classes.jsa
.\Microsoft SQL Server\90\Setup Bootstrap\sqlsval.dll
.\Microsoft Visual Studio\DF98\DOC\TAPI.CHM
.\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\sqlce20sql2ksp1.exe
.\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\docs\Partition II Metadata.doc
.\Microsoft Visual Studio .NET 2003\Visual Studio .NET Enterprise Architect 2003 - English\Logs\VSMsiLog0A34.txt
.\Microsoft Visual Studio 8\Microsoft Visual Studio 2005 Professional Edition - ENU\Logs\VSMsiLog1A9E.txt
.\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wce500\mipsiv\NETCFv2.wce5.mipsiv.cab
.\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i\UafxcW.lib
.\Microsoft Visual Studio 8\VC\ce\Dll\mipsii\mfc80ud.pdb
.\Movie Maker\MUI\0409\moviemk.chm
.\TheCompany\TheProduct\docs\TheProduct User's Guide.pdf
.\VNI\CTT6.0\help\StatV1.pdf
7,908,634,694

यह मुझे बताता है कि निर्देशिका 7.9gb है, जिनमें से

  • ~ 15% Intel Fortran संकलक को जाता है
  • ~ 15% VS .NET 2003 में जाता है
  • ~ 20% VS 8 पर जाता है

यह पूछने के लिए पर्याप्त सरल है कि क्या इनमें से कोई भी उतार दिया जा सकता है।

यह उन फ़ाइल प्रकारों के बारे में भी बताता है जो फ़ाइल सिस्टम में वितरित किए जाते हैं, लेकिन साथ में अंतरिक्ष की बचत के लिए एक अवसर का प्रतिनिधित्व करते हैं:

  • ~ 15% मोटे तौर पर .cab और .MSI फ़ाइलों में जाता है
  • ~ 10% मोटे तौर पर लॉगिंग टेक्स्ट फ़ाइलों में जाता है

यह बहुत सारी अन्य चीजों को भी दिखाता है, जो कि मैं शायद बिना कर सकता था, जैसे "स्मार्टडेविस" और "सीई" समर्थन (~ 15%)।

यह रैखिक समय लेता है, लेकिन इसे अक्सर नहीं करना पड़ता है।

यह पाया गया है कि चीजों के उदाहरण:

  • कई सहेजे गए कोड रिपॉजिटरी में DLL की बैकअप प्रतियाँ, जिन्हें वास्तव में सहेजने की आवश्यकता नहीं है
  • एक अस्पष्ट निर्देशिका के तहत सर्वर पर किसी की हार्ड ड्राइव की बैकअप प्रतिलिपि
  • अस्थायी अस्थायी इंटरनेट फ़ाइलें
  • प्राचीन डॉक्टर और मदद फ़ाइलों को लंबे समय तक चलने की जरूरत है

0

मेरे पास एक समान मुद्दा था, लेकिन इस पृष्ठ पर उत्तर पर्याप्त नहीं थे। मैंने पाया कि निम्नलिखित कमांड सूची के लिए सबसे उपयोगी है:

du -a / | sort -n -r | head -n 20

जो मुझे 20 सबसे बड़े अपराधियों को दिखाएगा। हालाँकि जब मैंने इसे चलाया, तब भी इसने मुझे असली मुद्दा नहीं दिखाया, क्योंकि मैंने पहले ही फाइल डिलीट कर दी थी। पकड़ यह थी कि अभी भी एक प्रक्रिया चल रही थी जो हटाए गए लॉग फ़ाइल को संदर्भित कर रही थी ... इसलिए मुझे पहले उस प्रक्रिया को मारना पड़ा, फिर डिस्क स्थान मुफ्त में दिखा।


अच्छी बात है, लेकिन यह एक टिप्पणी होनी चाहिए और खुद ही इसका जवाब नहीं होना चाहिए - यह सवाल बहुत सारे जवाबों से ग्रस्त है
ndemou

0

आप अपने सभी डिस्क की एक ऑनलाइन वेब रिपोर्ट बनाने के लिए DiskReport.net का उपयोग कर सकते हैं ।

कई रनों के साथ यह आपके सभी फ़ोल्डरों के लिए इतिहास का ग्राफ दिखाएगा, जो कि विकसित हुआ है, उसे ढूंढना आसान है


यह टूल प्रश्न के दो मुख्य बिंदुओं से मेल नहीं खाता है "मैं अक्सर अपने आप को एक पूर्ण विभाजन के बाद अपराधी को ट्रैक करने के लिए संघर्ष करते हुए पाता हूं" और "मैं एक कमांड लाइन समाधान पसंद करूंगा जो मानक लिनक्स कमांडों पर निर्भर करता है"
ndemou

0

क्रॉस-प्लेटफ़ॉर्म फ़्रीवेयर का एक अच्छा टुकड़ा है जिसे JDiskReport कहा जाता है, जिसमें यह पता लगाने के लिए एक GUI शामिल है कि वह सभी जगह क्या ले रहा है।

उदाहरण स्क्रीनशॉट:
JDiskReport स्क्रीनशॉट

बेशक, आपको मैन्युअल रूप से इसे डाउनलोड करने और स्थापित करने से पहले थोड़ा सा स्थान खाली करने की आवश्यकता होगी, या इसे अलग ड्राइव पर डाउनलोड करें (जैसे USB थंबड्राइव)।


(नकल के सवाल पर एक ही लेखक के जवाब से यहां कॉपी किया गया)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.