Linux

【Linux】ファイルやディレクトリの使用量と空き容量の確認方法

Webシステムを運用していると、データベースに大量のデータを投入したり、ファイルのダウンロード処理を実行したことでディスクの容量が枯渇し、サーバが動かなくなるケースは割と多いように思います。

そんな時各ディレクトリの使用状況や空き容量を確認したいのですが、使い方に慣れていないとCUIベースのlinuxにおいてディスク状況を正確に把握するのが困難だったりします。

今回はlinuxにおいてディレクトリ状況を確認する際に、自分が良く使うコマンドを紹介します。

確認の流れ

確認には以下の3つのコマンドを使います。

  • df: ディレクトリの空き容量を確認する
  • du: ディレクトリやファイルの使用量を確認する
  • ls: ディレクトリやファイルを一覧表示する

3つとも似ていますが、使い方としては「df -> du -> ls」の流れで使うことが多いです。

dfコマンドでディスク全体の容量の圧迫状況を確認して、枯渇しようなディレクトリ配下にたいしてduコマンドで個々のディレクトリやファイルの使用量を確認する。

最後に必要であれば末端のディレクトリに移動して、lsコマンドで細かいファイルの状態を確認する、という流れです。

dfコマンド

dfコマンドの使い方は以下の通り。

 コマンド例
df [オプション] [ファイルまたはディレクトリ]

オプションとして自分がよく使うのは6つです。

  • -h: ファイルサイズに応じて見やすい単位で表示
  • -t: 表示対象のファイルフォーマットの種類を指定
  • -x: 表示非対象のファイルフォーマットの種類を指定
  • -a: ダミーファイルを含めて表示
  • -l: ローカルファイルを含めて表示
  • --total: 全体の合計容量を表示

[使用例]

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      39347632   2103912  35238320   6% /
tmpfs                   250896         0    250896   0% /dev/shm
/dev/sda1               243823     59528    171495  26% /boot
vagrant              486828572 388635800  98192772  80% /vagrant

$ df -lha --total
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       38G  2.1G   34G   6% /
proc                     0     0     0    - /proc
sysfs                    0     0     0    - /sys
devpts                   0     0     0    - /dev/pts
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             239M   59M  168M  26% /boot
none                     0     0     0    - /proc/sys/fs/binfmt_misc
vagrant               465G  371G   94G  80% /vagrant
total                 1.4T  1.1T  315G  78%

コマンドの最後にディレクトリ名を指定すれば、そのディレクトリのディスク容量が絞った形で表示されます。

$ df -lha /vagrant/
Filesystem      Size  Used Avail Use% Mounted on
vagrant         465G  371G   94G  80% /vagrant

duコマンド

duコマンドの使い方はほとんどdfコマンドと一緒です。

 コマンド例
du [オプション] [ファイルまたはディレクトリ]

上記のようになりますが、オプションの値が異なります。

オプションの詳細はこのサイトに詳しく載っていますが、自分がよく使うものとしては、

  • -a: ディレクトリとファイルの両方を表示
  • -S: 個々のディレクトリに対してサブディレクトリは表示しない
  • -s: 指定したディレクトリの合計のみ表示
  • -h: ファイルサイズに応じて見やすい単位で表示
  • -c: 全体の合計容量を表示

が挙げられます。

[使用例]

注意点としてdfコマンドの時は全体のディスクが一覧表示されていましたが、duコマンドの場合は現在いるディレクトリ配下のファイルが対象であることに注意してください。

$ du
12      ./.subversion/auth/svn.simple
4       ./.subversion/auth/svn.ssl.server
4       ./.subversion/auth/svn.ssl.client-passphrase
4       ./.subversion/auth/svn.username
28      ./.subversion/auth
56      ./.subversion
59068   ./bk
8       ./.vim
8       ./.ssh
312216  .

$ du -ahc
4.0K    ./.bashrc
62M     ./report03.csv
4.0K    ./.subversion/auth/svn.simple/77de078f・・・・・・・・・・・・・・・・・・・・・・・・
4.0K    ./.subversion/auth/svn.simple/b25e2fcf・・・・・・・・・・・・・・・・・・・・・・・・
12K     ./.subversion/auth/svn.simple
4.0K    ./.subversion/auth/svn.ssl.server
4.0K    ./.subversion/auth/svn.ssl.client-passphrase
4.0K    ./.subversion/auth/svn.username
28K     ./.subversion/auth
8.0K    ./.subversion/servers
8.0K    ./.subversion/README.txt
8.0K    ./.subversion/config
56K     ./.subversion
130M    ./report02.csv
596K    ./bk/report01.csv
58M     ./bk/report02.csv
58M     ./bk
57M     ./report01.csv
4.0K    ./.vim/.netrwhist
8.0K    ./.vim
8.0K    ./.bash_history
4.0K    ./.ssh/authorized_keys
8.0K    ./.ssh
4.0K    ./.bash_profile
24K     ./.viminfo
4.0K    ./.bash_logout
305M    .
305M    total

lsコマンド

lsコマンドはカレントディレクトリにあるサブディレクトリやファイルの一覧を表示します。

自分がコマンドの中で、一番使っているコマンドと言っても過言ではありません!

使い方は以下の通りです。

ls [オプション] [ファイルまたはディレクトリ]

オプションはいっぱいあるのでココを参考にしてください。

[使用例]

$ ls
bk  report01.csv  report02.csv  report03.csv

$ ls -lha
total 248M
drwx------. 6 vagrant vagrant 4.0K Mar  7 18:07 .
drwxr-xr-x. 3 root    root    4.0K May 13  2018 ..
-rw-------. 1 vagrant vagrant 7.5K Mar  6 18:56 .bash_history
-rw-r--r--. 1 vagrant vagrant   18 Mar 23  2017 .bash_logout
-rw-r--r--. 1 vagrant vagrant  176 Mar 23  2017 .bash_profile
-rw-r--r--  1 vagrant vagrant  218 Nov 28 16:29 .bashrc
drwxrwxr-x  2 vagrant vagrant 4.0K Mar  7 16:37 bk
-rwxrwxrwx  1 vagrant vagrant  57M Mar  7 11:25 report01.csv
-rwxrwxrwx  1 vagrant vagrant 130M Mar  7 11:32 report02.csv
-rwxrwxrwx  1 vagrant vagrant  62M Mar  7 11:29 report03.csv
drwx------. 2 vagrant vagrant 4.0K Mar  6 18:26 .ssh
drwxrwxr-x. 3 vagrant vagrant 4.0K Sep 11 10:17 .subversion
drwxr-xr-x  2 vagrant vagrant 4.0K Mar  6 18:26 .vim
-rw-------  1 vagrant vagrant  22K Mar  6 18:26 .viminfo

ファイルやディレクトリの権限や所有者を確認するときに便利ですが、ディレクトリの容量は一律4.0kになってしまうので、使用量を確認するのには向きません。その際は上記で説明したduコマンドを使いましょう!

まとめ

linux環境におけるディスク状況の確認方法として、dfやdu、lsコマンドの使用方法をご紹介しました。

非常によく使うコマンドだと思うので、呼吸するレベルでコマンドをたたけるようにしていきましょうw (^^)/

-Linux