Linuxで大きなファイルとディレクトリを見つける方法

Linuxサーバーで大きなファイルとディレクトリのサイズを見つけることは、すべてのシステム管理者が日常のタスクで遭遇する最も重要なタスクの1つです。 したがって、すべてのシステム管理者は、ハードディスクを消費するより大きなディスクとファイルのサイズを見つけるための複数の方法について知っている必要があります。

システムのディスクが急速にいっぱいになり、Linux上のすべてのディスク領域で、どのファイルまたはディレクトリが取り込まれているのかを検出する必要がある場合は、さらに重要になることがあります。 この場合、データが入力されている特定のディレクトリの場所を見つけることができるはずです。 LinuxまたはUNIXファイルシステムで最大のドキュメントまたはディレクトリを検出するために使用できるショートカットコマンドはありませんが、ソースの場所に到達するのに役立つコマンドラインユーティリティを使用することで可能性があります。

したがって、このチュートリアルは、LinuxまたはUNIXライクなシステムで使用できる複数のコマンドを使用して、ファイルシステム上で最大のファイルまたはディレクトリを見つけるのに役立ちます。

1)検索コマンドを使用する

‘find’コマンドは、ディレクトリ階層内のファイルを検索したり、システム内の大きなファイルやディレクトリを検索したりする場合に非常に便利です。 以下のコマンドを実行して、サイズが50MBを超えるすべてのファイルを一覧表示します。さらに大きな数を指定できます。

# find / -xdev -type f -size +50M

これらの大きなファイルに関するより詳細な結果を見つけるには、パラメーターの下にある「find」コマンドを拡張できます。

# find / -xdev -type f -size +50M -exec ls -alh {} ; | sort -nk 5

以下のコマンドを使用して、システムの特定のディレクトリにある最大10個のファイルを検索します。

# find /usr -type f -printf "%s %pn" | sort -rn | head -n 10
114973832 /usr/share/fonts/opentype/noto/NotoSansCJK.ttc
83333096 /usr/lib/thunderbird/libxul.so
78809336 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
71551944 /usr/lib/firefox/libxul.so
58250232 /usr/lib/libreoffice/program/libmergedlo.so
41729688 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.19.4
41587032 /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
41294304 /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess2
37857816 /usr/lib/x86_64-linux-gnu/libQt5WebKit.so.5.5.1
35945726 /usr/local/bin/consul

2)lsコマンドを使用する

‘ls’は、ファイルとディレクトリのディレクトリの内容を一覧表示するLinuxシェルコマンドです。 このコマンドをさまざまな方法で使用して、ファイルとフォルダーを一覧表示できます。 リストを確認するには、現在のディレクトリ内のファイルをサイズ順に並べ、サイズを大きくして、コマンドの下で実行します。

# ls -alhS
-rw-------  1 root root  59K Apr 18 20:57 agedu.dat
-rw-------  1 root root  13K Apr 20 18:27 .gt5.html
-rw-r--r--  1 root root  10K Jan 25 03:43 index.html
-rw-------  1 root root 4.1K Apr 22 22:06 .bash_history
drwx------  6 root root 4.0K Apr 18 20:57 .
drwxr-xr-x 24 root root 4.0K Apr 17 10:40 ..
drwx------  2 root root 4.0K Apr 20 17:03 .cache
drwx------  3 root root 4.0K Apr 12 15:38 .gnupg
drwx------  2 root root 4.0K Apr 20 18:27 .gt5-diffs
drwx------  2 root root 4.0K Apr 20 18:29 .w3m
-rw-r--r--  1 root root 3.1K Oct 22  2015 .bashrc
-rw-------  1 root root 1.1K Apr 12 15:43 .viminfo
-rw-r--r--  1 root root  148 Aug 17  2015 .profile

同様に、「ls」コマンドを使用して追加できます r 現在のディレクトリ内のファイルのサイズを再帰的に表示する場合、またはそこに存在するファイルのサイズを確認するディレクトリのパスを指定する場合があります。

# ls -lhtr
# ls -lhtr /var/log/

現在のディレクトリで上位10個の最大ファイルのリストを再帰的に取得するには、以下のコマンドを使用します。

# ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n10
456K initial-status.gz
356K syslog
248K dpkg.log
216K syslog.1
168K kern.log
160K kern.log.1
100K dpkg.log.2.gz
96K partman
92K syslog
84K syslog.6.gz

‘ls’コマンドを使用するためのヘルプをさらに取得するには、以下のコマンドを使用できます。

# ls --help

3)gt5ツールの使用

‘gt5’は、Linuxシステム上のファイルとディレクトリのサイズをチェックするために使用できるもう1つの優れたコマンドラインツールです。 ただし、使用を開始する前に、システムにインストールする必要があります。 ‘gt5’をインストールするには、Linuxシステムで以下のコマンドを実行できます。

# apt install gt5

インストール後、これを使用して、以下のコマンドを使用してシステムファイルとディレクトリのサイズを確認できます。

# gt5
# gt5 /var

‘gt5’コマンドで拡張された任意のディレクトリを指定して、最大サイズのディレクトリとファイルを確認できます。 ディレクトリをさらに展開するには、そのディレクトリにマウスカーソルをドラッグして、Enterキーを押します。

# gt5 /var/log

ディレクトリを別のパスに変更し、トップファイルとディレクトリの内部ビューに対して「gt5」コマンドを実行してみましょう。

# cd /usr/src/linux-headers-4.10.0-20-generic/
#gt5

4)duコマンドの使用

「du」コマンドはディスク使用量と略され、すべての内容を含むディレクトリツリーのサイズと個々のファイルのサイズを報告します。 これにより、スペースホッグ、つまり、ハードディスクドライブやその他のストレージメディアで大量または過剰なスペースを消費するディレクトリやファイルを追跡するのに役立ちます。

‘du’の基本的な構文は次のとおりです。

# du [options] [directories and/or files]

Linux / UNIXファイルシステムの上位のファイルとディレクトリを見つけるには、必要な出力を取得するためのduの適切なコマンドはありませんが、以下に示すように、「sort」、「head」、「find」コマンドなどの他のコマンドと一緒に使用します。 。 より人間が読める形式で出力を取得するには、「du」コマンドで「-h」パラメーターを使用できます。

# du -ah /var | sort -n -r | head -n 10
1020K   /var/cache/apt/archives/fonts-dejavu-core_2.37-1_all.deb
1016K   /var/cache/apt/archives/udev_232-21ubuntu3_amd64.deb
1016K   /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.04.1_amd64.deb
1016K   /var/cache/apt/archives/colord-data_1.3.3-2_all.deb
1016K   /var/cache/apt/archives/colord-data_1.3.2-1_all.deb
1004K   /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.10.1_amd64.deb
1004K   /var/cache/app-info/gv
1000K   /var/cache/app-info/gv/zh.gvz
996K    /var/cache/apt/archives/udev_231-9ubuntu4_amd64.deb
996K    /var/cache/apt/archives/netpbm_2%3a10.0-15.3build1_amd64.deb

次に、以下のコマンドを使用して、図のように上位のファイルを確認する必要のあるディレクトリに移動します。

# cd /var/log/
# du -hsx * | sort -rh | head -10
2.9M    dpkg.log.1
2.0M    dist-upgrade
1.6M    kern.log.1
932K    installer
232K    syslog.2.gz
228K    tomcat8
188K    syslog.1
188K    auth.log.1
144K    kern.log
136K    apt

5)ディスク使用量をチェックするNcduコマンド

Ncduは、Ncursesインターフェースを備えたディスク使用量アナライザーです。 スペースを消費するファイルやディレクトリを追跡する場合に非常に便利で使いやすいです。 UbuntuまたはRHELシステムに以下のコマンドを使用して簡単にインストールできます。

# apt install ncdu
# yum install ncdu

インストール後、このコマンドの使用を開始して、システムのディスク使用量を確認できます。

# ncdu

このコマンドを実行すると、ディスクの更新が開始され、端末に結果が表示されます。 以下のコマンドを使用して、システムのルートパーティションのディスク使用量を確認します。

# ncdu /

トラブルシューティングを容易にする最大のフォルダが一番上に表示されます。 ヘルプコマンドを使用して、その使用法について詳しく知ることができ、これからより多くの利益を得ることができます。

6)ディスクを最も消費しているディレクトリを見つけるためのシェルスクリプト

このシェルスクリプトでは、どのトップディレクトリが大きなディスクスペースを消費しているかを確認します。これにより、緊急時にスペースを解放できる可能性があります。 このスクリプトで使用したコマンドは、「du」と異なるキー、「sort」および「head」です。

‘vi’のようなコマンドラインエディタを使用して新しいファイルを作成し、以下に示すようにその中に次のコンテンツを入れましょう。

# vim topdir.sh
#/bin/bash

    #check if user input argument

    if [ $# -eq 0 ]; then

    #if no argument print next messge and exit from script
    echo "Usage: $0 "

    exit 1

    fi
    # Save first arguments to variables
    CheckedDir="$1"
    #
    HeadValue=$2
    #set value for variable count value 1
    count=1

    #just print empty line
    echo ""

    #Print next message:
    echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:"

    echo ""

    #Getting list of directories and space they use.
    du -a --max-depth=1 --one-file-system ${CheckedDir}/ |

    #next we sort result
    sort -rn |

    sed "1d" |

    # next we get only first X directories
    head -"${HeadValue}" |

    #next print result to user
    while read size dirrr ; do
    #counting size in Mb

    size="$(( size / 1024 ))"

    #show output for user
    echo "N°${count} : ${dirrr} is ${size} Mb"

    ((count++))

    done

    echo ""

Save と close 構成ファイルを作成し、ファイルに実行可能権限を付与してから、スクリプトを実行して、図のように定義された場所の下にある最上位のディレクトリを見つけます。

# chmod +x topdir.sh
# ./topdir.sh /var/log/

結論

このチュートリアルでは、複数のコマンドラインユーティリティを使用して、Linuxシステムのディスク上の大きなディレクトリとディレクトリをチェックしました。 多くのディスクスペースを消費するファイルやディレクトリに到達するために複数の方法を頻繁に使用し、それらのファイルやディレクトリに到達するにはそのようなコマンドを使用する必要があります。 この記事では、ディスクスペースの使用量を見つけるためのコマンドラインツールについて説明しましたが、大きなファイルやディレクトリを含むディスクスペースを見つけて監視するために利用できる他の多くのWebアナライザーがあります。