Bir Linux web sunucusunda hangi dosyaların alanın% 80'ini kapladığını nasıl bulur?


15

Sürücü sürekli doluyor. Yapabileceğiniz tüm yedek ve rastgele dosyaları avladınız. coredump dosyaları için grep'd ve hatta bazı gereksiz yedekleri kaldırdı ...

Bir sonraki hamlen ne olurdu.

Söz konusu sunucunun 10GB web sitesi dosyası vardır ve işletim sistemi 10GB'den fazla almamalıdır, bu yüzden 50GB (sanal) bir sürücüyü dolduranı nasıl izlersiniz?


Yanıtlar:



23

Elbette daha ayrıntılı yollar var, ama hatırladığım

du - maks. derinlik = 1-saat /

Şimdi en çok yer kaplayan dizini alın ve (du --max-depth=1 -h /yourdir)suçluyu bulana kadar daha derine inin.
Çıktınızın boyuta göre sıralanmasını istiyorsanız ve insan tarafından okunabilir formatı umursamıyorsanız,du --max-depth=1 /your_dir | sort -n


Evet. Ben de hemen hemen aynı şeyi yapıyorum "du -S | sort -n -r | less". Gerçekten htop gibi görünen ve mlocate gibi cron istiyorum bir program görmek isterdim ama koştu zaman sisteminizdeki dosyalar hakkında doğru ve çağdaş bilgi verdi.
Gareth

1
Web sunucusundan / web sunucusundan başlamak yerine http_root'tan başlamayı deneyin. Orada başarı yoksa '/' denilebilir. '/' Dizininde çalışan dizin çok zaman alacaktır.
Saurabh Barjatiya

4

Gnome programı baobabını kullanıyorum. Bunu masaüstünüzde çalıştırabilirsiniz ve SSH üzerinden sunucuya bağlanabilirsiniz. Disk alanı kullanımının okunması kolay grafik haritasını gösterir. Gnome altında "Disk Kullanım Analizörü" olarak kurulur



2

df -k sorun hangi fs olduğunu gösterir. Sonra bunun için üst düzey dir cd ve du -xk çalıştırın | sıralama -n | kuyruk -25 bu, güneş 9 veya öncesi için sıralanmış en üst 25 dizini gösterecek, x'i d ile değiştirecektir.


Evet, @ Marie Fischer'ın cevabında bahsettiğim gibi. Neden insan için -h yerine -k (blok boyutu) kullanılmalı?
Gareth

-k, tüm boyutların kb cinsinden bildirilmesi için kullanılır. Bu sıralama sırasında 20kb önce 10kb koymak başka sıralama için yararlıdır.
Saurabh Barjatiya

1

Hala yazılırken dosyaların silinebileceğini unutmayın, bu nedenle oluşturma işlemleri çalışırken disk alanı kullanırlar, ancak dosya adları yoktur.

Bu, olağan araçlarla kullanılamaz hale gelir - hangi işlemlerin açık dosyalara sahip olduğunu araştırmak için lsof kullanabilirsiniz.


Bunu /usr/sbin/lsof | grep deletedalmak için kullanıyorum .
Kevin M

0

Sistemde yazılım çalıştırabiliyorsanız, xdiskusage grafik olarak size hangi dizinleri / dosyaları alanınızı yiyorsa gösterecektir. Son derece kullanışlı.

KDE'nin benzer bir şey içerdiğine inanıyorum.

Yalnızca metinse ve fazladan yazılım yükleyemiyorsanız, yaratıcı kullanımı dumuhtemelen sizi oraya götürecektir.


0
  1. web sunucuları giriş dizinine cd (apache'nin giriş dizini)
  2. "du -a | head -30 | sort -nr" komutunu çalıştırın
  3. size 30 en büyük disk tüketen dosya / dizin verecektir
  4. onları bulabilir ve silebilirsiniz (eğer kullanışlı değilse)

Eğer sırasını değiştirmek sürece bu işe gitmiyor headve sort. Ayrıca biçimlendirme özelliklerini de kullanmalısınız.
kasperd

0

Çok fazla yer kaplayan dosya veya klasörleri bulmak için aşağıdaki komutları kullanabilirsiniz.

Örneğin, geçerli klasördeki en büyük ilk 20 dizini görüntülemek için aşağıdaki tek astarı kullanın:

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

veya:

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

Geçerli dizindeki en büyük 20 dosya için (yinelemeli olarak):

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

veya insan tarafından okunabilir boyutlarda:

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

Düzgün OSX / BSD üzerinde çalışmaya İkinci komut (olarak sortyok -h), yüklemek gerekir sortdan coreutils. Ardından bin klasörünü kendi klasörünüze ekleyin PATH.

Bu komutları takma adlar olarak tanımlayabilirsiniz (örn. Rc dosyalarınıza ekleyin .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'

Sonra gerçekleştiğini düşündüğünüz klasörlerin içinde bigveya big-filesiçinde çalıştırın (örn. İçinde /home).


0

veritabanı sunucularımızdaki bazı hileli süreçleri izlemek için birlikte topladığım bir şey: 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

biraz kludgey ve çok sağlam değil, ama bu şekilde çalışıyor:

  1. geçerli dizinin özyinelemeli ağaç listesini oluşturma
  2. 5 saniye bekle
  3. başka bir liste oluştur
  4. iki çıkışı karşılaştır
  5. boyutu değişmiş dosyaları kaynaştırır ve
  6. ps -lFp dosyalara hangi işlemin sahip olduklarını gösterecek

    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
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.