1. 序章

このチュートリアルでは、ディスクスペースを監視するためのいくつかのLinuxツールについて説明します。

2. ファイルシステムとマウント

まず、ファイルシステムとマウントの違いを理解することが重要です。

ファイルシステムとは、オペレーティングシステムで使用できるハードディスクのパーティションを意味します。  ファイルシステムは、ネットワークベース、メモリ内、USBドライブ、および特別な一時スペースにすることもできます。

オペレーティングシステム上のファイルシステムにアクセスできる場合、ファイルシステムは「マウントされている」、つまりディレクトリで利用可能であると言います。 ファイルシステムがマウントされるディレクトリは、その「マウントポイント」と呼ばれます。

「ルート」ディレクトリはオペレーティングシステムのベースディレクトリであり、/にあります。 したがって、オペレーティングシステムには常に少なくとも1つのファイルシステムが/にマウントされています。

一般に、ルートディレクトリに関連するファイルシステム内のすべてのディレクトリについて説明します。

3. df –ファイルシステムの使用法

dfは、ファイルシステムの使用状況を確認するために使用するコマンドです

これをシェルで実行してみましょう。

user@host:~$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             1005792        0   1005792   0% /dev
tmpfs             204824    22140    182684  11% /run
/dev/sda        24543644 15646380   7635696  68% /
tmpfs            1024108        0   1024108   0% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs            1024108        0   1024108   0% /sys/fs/cgroup
tmpfs             204824        0    204824   0% /run/user/1000

列ヘッダーから、各値の意味を確認できます。 重要なのは、サイズに関係する列は、dfに渡す引数に応じてスケールが変わることです。

たとえば、試してみましょう df-h。 The -hは、人間が読める形式で出力を表示します 1024の累乗:

Filesystem      Size  Used Avail Use% Mounted on
udev            983M     0  983M   0% /dev
tmpfs           201M   22M  179M  11% /run
/dev/sda         24G   15G  7.4G  67% /
tmpfs          1001M     0 1001M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
tmpfs           201M     0  201M   0% /run/user/1000

上記の出力では、桁数を3桁以下に減らすために、サイズの後にバイト、キロバイト、メガバイト、ギガバイト、テラバイト、およびペタバイトの文字が付いていることがわかります。

df にはいくつかのオプションがあるので、manページを参照して何が利用できるかを確認できます。

4. du –ディレクトリの使用

duは、ディレクトリサイズを確認するために使用するコマンドです。

私たちの端末が3つのディレクトリと1つのファイルがある場所にあると想像してみましょう。

$ ls -l
total 20
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:15 one
-rw-r--r-- 1 mike sudo    6 Nov 4 12:37 test.txt
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:16 three
drwxr-xr-x 2 mike sudo 4096 Nov 3 20:15 two

ls を使用すると、各ディレクトリのサイズが4096バイトであることがわかります。は、ディレクトリとその内容で使用されるサイズではなく、ディスク上のディレクトリのポインタのサイズです。

次に、 duを使用して、ディレクトリのサイズとその内容を確認します

$ du
1024008 ./three
122888 ./two
10244 ./one
1157144 .

df と同様に、 du も、人間が読める形式の-hをサポートしています。

$ du -h
1001M ./three
121M ./two
11M ./one
1.2G .

du には、ここで説明されていない他の多くのオプションもあります。

5. 大きなファイルの検索

dfおよびduを使用して、システムで使用されているスペースの概要を取得する方法を見てきました。

ただし、マシンのスペースを解放するときは、どのファイルがすべてのスペースを占有しているかを具体的に知る必要があります。 ここで、lsおよびfindコマンドを使用できます。

5.1. サンプルファイル

まず、次の例で使用しているディレクトリツリーを見てみましょう。

Size        Path and File
----       ------------------------------
6          ./test.txt
1000M      ./three/output4.dat
10M        ./two/output2.dat
100M       ./two/two-a/more/output3.dat
10M        ./two/output1.dat
10M        ./one/output.dat

5.2. lsを使用する

上記のように、lsを使用してディレクトリの内容を表示できます l オプションを使用すると、ディレクトリ内のファイルサイズを表示できます。 これは便利ですが、調べるディレクトリがたくさんあるとすぐに面倒になる可能性があります。 ls -lh を使用して、この例の3つのディレクトリで大きなファイルを見つける方法を見てみましょう。

$ ls -lh one/
total 10M
-rw-r--r-- 1 mike sudo 10M Nov  3 20:15 output.dat

ディレクトリoneに1つの10メガバイトのファイルがあります。

次に、 du:によると121メガバイトを使用しているディレクトリtwoを見てみましょう。

$ ls -lh two
total 21M
-rw-r--r-- 1 mike sudo  10M Nov  3 20:15 output1.dat
-rw-r--r-- 1 mike sudo  10M Nov  3 20:15 output2.dat
drwxr-xr-x 3 mike sudo 4.0K Nov  4 13:29 two-a

two に2つの10メガバイトのファイルと、two-aというサブディレクトリがあります。 私たちはまだ100メガバイトのファイルを探しています。

two-a を見て、そこに何があるかを見てみましょう。

$ ls -lh two/two-a/
total 4.0K
drwxr-xr-x 2 mike sudo 4.0K Nov  4 13:30 more

two-a、には別のディレクトリがありますが、不足している100メガバイトはまだ見つかりません。

ファイルを見つけてそのサイズを印刷する再帰ツールがあればいいのにと思います。

5.3. findを使用する

findコマンドは、ディレクトリツリー内のすべてのファイルとそのサイズを表示する方法です

ディレクトリの下にあるすべてのファイルとサイズを印刷するには、次のようにします。

$ find . -type f -exec ls -lh {} \;
-rw-r--r-- 1 mike sudo 6 Nov  4 12:37 ./test.txt
-rw-r--r-- 1 mike sudo 1000M Nov  3 20:16 ./three/output4.dat
-rw-r--r-- 1 mike sudo 10M Nov  3 20:15 ./two/output2.dat
-rw-r--r-- 1 mike sudo 100M Nov  3 20:15 ./two/two-a/more/output3.dat
-rw-r--r-- 1 mike sudo 10M Nov  3 20:15 ./two/output1.dat
-rw-r--r-- 1 mike sudo 10M Nov  3 20:15 ./one/output.dat

これにより、ディレクトリツリー内の各ファイルとそのサイズが表示されます。  もちろん、 find を使用してこれを行う方法はたくさんありますが、この単純な方法では、すべてのファイルとそのサイズが出力されます。

findを使用して、サイズが20メガバイトを超えるファイルのみを表示したいとします。

$ find . -type f -size +20M -exec ls -lh {} \; 
-rw-r--r-- 1 mike sudo 1000M Nov 3 20:16 ./three/output4.dat
-rw-r--r-- 1 mike sudo 100M Nov 3 20:15 ./two/two-a/more/output3.dat

find は非常に強力なツールであるため、さらにオプションを見つける必要がある場合は、マニュアルページを確認できます。

6. 結論

このチュートリアルでは、ファイルシステムとファイルまたはディレクトリの両方のディスク容量を確認する方法を見てきました。  また、スペースを占有しているファイルに関する詳細を見つけるために、いくつかのユーティリティを調べました。