web-dev-qa-db-ja.com

Linuxウェブサーバーのスペースの80%を占めるファイルをどのようにして見つけるのですか?

ドライブは常に満杯です。可能なすべてのスペアファイルとランダムファイルを狩りました。コアダンプファイルをgrepし、不要なバックアップの一部を削除しました...

あなたの次の動きは何でしょうか。

問題の実際のサーバーには10 GBのWebサイトファイルがあり、OSは10 GBを超えてはなりません。50GB(仮想)ドライブの容量を追跡するにはどうすればよいですか。

15
Gareth

私はncdu( http://dev.yorhel.nl/ncd )がこれに非常に役立つと思います。

9
Scott

確かにもっと複雑な方法がありますが、私が覚えているのは

du --max-depth = 1 -h /

次に、ほとんどのスペースを使用するディレクトリを取得します(du --max-depth=1 -h /yourdir)そして、犯人が見つかるまで深く調べます。
出力をサイズでソートし、人間が読める形式を気にしない場合は、du --max-depth=1 /your_dir | sort -n

23
Marie Fischer

私はGnomeプログラムのbaobabを使用しています。これはデスクトップで実行でき、SSH経由でサーバーに接続できます。これは、ディスク領域の使用状況のわかりやすいグラフィックマップを示しています。 Gnomeの下に「Disk Usage Analyzer」としてインストールされます

4
Josh

gt5 を試してみてください。

df -kは、どのfsが問題であるかを示します。次に、その最上位のディレクトリにcdし、du -xk |を実行します。ソート-n | tail -25これは、ソートされた上位25のディレクトリを表示します。Sun9以前では、xをdに置き換えます。

2
Ronald Pottol

ファイルは書き込み中に削除できるため、作成プロセスの実行中にディスク領域を使用しますが、ファイル名はありません。

これにより、通常のツールでは検索できなくなります。lsofを使用して、ファイルを開いているプロセスを調べることができます。

システムでソフトウェアを実行できる場合、 xdiskusage は、どのディレクトリ/ファイルが領域を消費しているかをグラフィカルに示します。非常に便利です。

KDEにも同様のものが含まれていると思います。

テキストのみで追加のソフトウェアをインストールできない場合は、duをクリエイティブに使用すれば、おそらくそこにも到達できます。

0
sleske
  1. webサーバーのホームディレクトリ(Apacheのホームディレクトリ)に移動します。
  2. コマンド「du -a | head -30 | sort -nr」を実行します
  3. それはあなたに30の最大のディスク消費ファイル/ディレクトリを与えます
  4. あなたはそれらを見つけて削除することができます(役に立たない場合)

データベースサーバー上の不正なプロセスを追跡するために、私は一緒に石畳を作りました: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

それはちょっとだらけであまり堅牢ではありませんが、このように機能します:

  1. 現在のディレクトリの再帰的なツリーリストを生成する
  2. 5秒待つ
  3. 別のリストを生成する
  4. 2つの出力を比較する
  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
    
0
Greeblesnort

次のコマンドを使用して、容量が大きすぎるファイルまたはフォルダを見つけることができます。

例えば。現在のフォルダーの上位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で正しく動作する2番目のコマンド(sortには-hがないため)、sortcoreutilsからインストールする必要があります。次に、binフォルダーをPATHに追加します。

これらのコマンドをエイリアスとして定義できます(例:.bash_profileなどのrcファイルに追加):

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
kenorb