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


15

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

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

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


回答:



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のように見え、mlocateのようにcron'dされたプログラムを見てみたいのですが、実行すると、システム上のファイルに関する正確で最新の情報が得られました。
ガレス

1
Webサーバー上の/から開始する代わりに、http_rootから開始してみてください。成功しない場合は、「/」を選択できます。'/'でduを実行しているディレクトリには多くの時間がかかります。
Saurabh Barjatiya

4

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



2

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


ええ、@ Marie Fischerの答えで私がちょうど言ったことに似ています。なぜ-hではなく-k(ブロックサイズ)を使用するのですか?
ガレス

-kは、すべてのサイズがkbで報告されるように使用されます。これはソートに便利です。そうでない場合、sortはソート中に20mbの前に10kbを置きます。
Saurabh Barjatiya

1

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

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


/usr/sbin/lsof | grep deletedこれを取得するために使用します。
ケビンM

0

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

KDEには似たようなものが含まれていると思います。

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


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

headとの順序を変更しない限り、これは機能しませんsort。また、フォーマット機能を使用する必要があります。
カスペルド

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の作業に2番目のコマンド(ようsortがない-h)、あなたがインストールする必要がありますsortからcoreutils。次に、binフォルダーをに追加しますPATH

これらのコマンドをエイリアスとして定義できます(例:などの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'

次に、実行すると思われるフォルダ内で実行するbigbig-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

それはちょっと派手で非常に堅牢ではありませんが、このように動作します:

  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
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.