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 (^^)/