自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

[Linux] ディスクの空き容量と使用量をdfコマンドとduコマンドで確認する

Linux
Linux

データアナリストとして働いていても何だかんだLinuxに触れる機会はそれなりにあるかと思います。

・Linuxサーバーに入ってsqlコマンドを叩く
・共有で使っているjupyterサーバーが落ちていたので、Linuxに入って起動し直す
・簡単なデータ加工をsedやawkでやる
・データの件数をwc -lで確認する
・perlを使う
・データ移行作業を行う
・Linuxサーバーでpythonファイルを実行する

など経験がある方は多いのではないでしょうか。

完全にデータ準備と作成はエンジニア、モデル作成はデータアナリストと分業している場合やSASやSPSS Modelerといったツールを使っている場合は関わることは少ない場合はあります。

しかし、理解することによって知識の幅が広がりますしエンジニアとの共通言語も増えるので、こんなこともビジネス上実現可能ではないかというアイディアも湧いてくると言うこともあるかも知れません。

いつでも参照できるようにlinuxコマンドでファイルやフォルダの操作、ファイルを別サーバーへ転送、日付変数の作成とループ処理など分析業務で今まで使ってきたコマンドを徐々にまとめておこうと思います。

今回はディスク空き容量と使用量を調べるコマンドであるdfコマンドとduコマンドをまとめます。

スポンサーリンク

dockerでlinuxサーバー(Ubuntu)の準備

Linuxディストリビューションは色々種類がありますが、今回はUbuntuでコマンドを実行させ出力した結果をまとめていこうと思います。

CentOS、Redhat Linux、Oracle Linuxなどでもかまいません。大学や職場でよく使うディストリブーションでやってみてください。パッケージ管理(yumやapt-get)の差があるのでそこは適時読み替えていただくことになります。

まずはdockerのバージョンを確認しておきます。本記事ではmacのDocker Desktopを使っています。(Docker Desktopは社員数が多い企業の方だと有料である可能性があります。詳しくはDocker Desktop、無料で使える猶予期間が終了 従業員数250人以上、年間売り上げ1000万ドル以上の組織は有料にをご確認ください)

# dockerのバージョンを確認
docker -v
Out[0]
Docker version 20.10.17, build 100c701

先ほどアップデートしたので22年8月末時点の最新版だと思います。

スポンサーリンク

どうせなら22年8月末現在、一番新しいUbuntu22.10を使う

DockerのUbuntuイメージは公式サイトのdockerhubから詳細を確認できます。

今回は22年8月末で提供されている一番新しいバージョンである22.10をpullして使いたいと思います。

# dockerイメージをダウンロード
docker pull ubuntu:22.10
Out[0]
22.10: Pulling from library/ubuntu
90b96841878b: Pull complete 
Digest: sha256:f1acf3443c577db1b1df3b47593b07895acab5ef582e5a661c2c1ade6f19e431
Status: Downloaded newer image for ubuntu:22.10
docker.io/library/ubuntu:22.10
# ダウンロードしたdockerイメージを確認
docker images
Out[0]
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.10     15a38249db7a   4 weeks ago   70.4MB
# ubuntu22.10のコンテナ作成 (detachする)
docker run -it -d --name ubuntu22.10 ubuntu:22.10
Out[0]
db7670a96e897890d0c7a7a84ef728a0373965b2ef38338a153eb54b9aadbc27
# コンテナが起動しているか確認
docker ps
Out[0]
CONTAINER ID   IMAGE          COMMAND   CREATED         STATUS         PORTS     NAMES
db7670a96e89   ubuntu:22.10   "bash"    5 seconds ago   Up 4 seconds             ubuntu22.10

無事起動しているようです。

# コンテナの中に入る
docker exec -it ubuntu22.10 /bin/bash
# OSの情報を確認
root@db7670a96e89: cat /etc/os-release 
Out[0]
PRETTY_NAME="Ubuntu Kinetic Kudu (development branch)"
NAME="Ubuntu"
VERSION_ID="22.10"
VERSION="22.10 (Kinetic Kudu)"
VERSION_CODENAME=kinetic
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=kinetic
LOGO=ubuntu-logo

Ubuntu22.10のようです。

スポンサーリンク

容量を占有しているフォルダやファイルを特定する手順

長くLinuxサーバーを運用しているとログファイルやアプトプットデータが蓄積されてHDDやSSDの容量が満タンになりアプリケーションがエラーになることがあります。その場合どのファイルやフォルダが占有しているか調査し削除するといった作業が発生します。

自己流ですが、私は下記の手順で見つけています。

「 df -h 」 コマンドでディスクの空き容量を確認する

# ディクスの容量の確認
root@db7670a96e89: df -h
Out[0]
Filesystem      Size  Used Avail Use% Mounted on
overlay          59G  1.7G   54G   3% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/vda1        59G  1.7G   54G   3% /etc/hosts
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /sys/firmware

「/」 ルート以下が3%の容量を使っていて97%空いているという意味になります。もしここがUse100%近くになっていたら不要ファイルを削除しないといけません。

「 du 」 コマンドでディスクの使用量を確認する

# ルートから深さ1まで(/以下のフォルダ)を探索しそれぞれのディレクトリのディスク使用量を出力する
du -h -d1 / | sort -h
Out[0]
du: cannot access '/proc/56/task/56/fd/4': No such file or directory
du: cannot access '/proc/56/task/56/fdinfo/4': No such file or directory
du: cannot access '/proc/56/fd/3': No such file or directory
du: cannot access '/proc/56/fdinfo/3': No such file or directory
0   /dev
0   /proc
0   /sys
4.0K    /boot
4.0K    /home
4.0K    /media
4.0K    /mnt
4.0K    /opt
4.0K    /srv
4.0K    /tmp
12K /root
20K /run
632K    /etc
4.5M    /var
72M /usr
77M /

/usrが一番容量を占有しているようです。

次は/usrディレクトリ以下を探索していきます。

# ルートから深さ1まで(/以下のフォルダ)を探索しそれぞれのディレクトリのディスク使用量を出力する
du -h -d1 /usr | sort -h
Out[0]
4.0K    /usr/games
4.0K    /usr/include
4.0K    /usr/lib32
4.0K    /usr/lib64
4.0K    /usr/libx32
4.0K    /usr/src
32K /usr/libexec
68K /usr/local
5.1M    /usr/share
5.5M    /usr/sbin
19M /usr/bin
43M /usr/lib
72M /usr

/usrディレクトリの中にある、/usr/lib/usr/binのディクス使用量が大きいようです。

スポンサーリンク

まとめ

ディスクの空き容量と使用量をdfコマンドとduコマンドで確認してみました。

ディスク使用量がいっぱいにならないようにログローテションなどを活用したり定期的に不要ファイルは削除できる仕組みがあるといいですね。

タイトルとURLをコピーしました