初めて触るサーバの状況を把握しよう!Linuxのdf, ps, freeコマンドを徹底解説

Linux

ブログ運営者
さいとう

閲覧いただきありがとうございます!"さいとう"と申します。わたしは異業種・未経験からIT業界に転職し、現在インフラエンジニアとしてクラウド環境の設計や構築・運用の支援を行っています。


エンジニアの中には半年から数年おきにプロジェクトを渡り歩く人がいます。わたしもそのうちの一人で、エンジニアになって約2年の間に5つのプロジェクトに参加しました。どこのプロジェクトも最初の一カ月でプロジェクトの概要を理解するように、と時間をくれます。


しかし、システムは常に稼働しているので、インフラエンジニアとしてまず始めに稼働中のサーバの状態を知っておくことをお勧めします


今回紹介する「df, ps, freeコマンド」は、初めて触るサーバの状況を知るのにうってつけのコマンドです。ぜひ使えるようになりましょう。

サーバの状態を把握する三種の神器

わたしは今まで、サーバ・システムの状況を知るためにドキュメントを読んでからサーバを触るようにしていました。


しかし、ドキュメントの管理がずさんな場合、現在の状態と乖離している場合があります


プロのための Linuxシステム・10年効く技術 (Software Design plus)」を読んでからは、まずは「df, ps, freeコマンド」を利用してサーバの最新の状態を知るようにしています。


↓【PR】今回参考にした書籍です。発行年は古いですが、考え方やLinuxとの向き合い方がわかる良書です。


1. はじめに

Linuxサーバの状況を迅速に把握するために、df、ps、freeコマンドは非常に役立ちます。

  • dfコマンド ⇒ ディスク使用状況
  • psコマンド ⇒ 実行中のプロセス情報
  • freeコマンド ⇒ メモリ使用状況


上記3つのコマンドを利用することで、サーバのリソース使用状況やパフォーマンスを総合的に監視できるというわけです。


本記事では、df、ps、freeコマンドの使い方や出力の見方について解説します。初めてサーバに触れるインフラエンジニアの皆さん、これから紹介する情報を活用して、サーバの管理スキルを向上させましょう

2. dfコマンドでディスク使用状況を把握しよう

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


デフォルトでは、すべてのマウントされたファイルシステムのディスク使用量を表示します。各ファイルシステムの総容量、使用済み容量、空き容量、および使用率が表示されます。


dfコマンドを使うことで、ディスクの容量がどれくらい使用されているかを確認するのに役立ちはずです。

dfコマンド例

dfコマンドの基本的な使い方と、便利なオプションを紹介します。

基本的な使用方法
df

すべてのマウントされたファイルシステムのディスク使用状況を表示します。

人間に読みやすい形式で表示
df -h

わたしはこのオプションとの組み合わせを一番使っています。-hオプションは、人間が読みやすい形式(KB、MB、GBなど)でディスク使用状況を表示してくれます。

特定のファイルシステムの情報を表示
df /home

/homeディレクトリがマウントされているファイルシステムのディスク使用状況を表示します。

ファイルシステムのタイプを表示
df -T

-Tオプションは、各ファイルシステムのタイプ(ext4、xfs、nfsなど)を表示します。

dfコマンドユースケース

dfコマンドは次のようなケースで使われます。

  • ディスク容量の監視
     システム管理者がサーバーのディスク容量を監視し、ディスクがいっぱいになりそうな場合に警告を出すために使用します。特に、ログファイルやバックアップファイルが多く生成される環境では重要です。

  • トラブルシューティング
     システムのパフォーマンスが低下したり、ファイルの書き込みエラーが発生したりする場合に、ディスク使用状況を確認することで、ディスクの空き容量不足が原因かどうかを判断できます。

  • システム管理
     新しいファイルシステムを追加したり、既存のファイルシステムを拡張したりする際に、現在のディスク使用状況を確認するために使用します。


dfコマンド実例

dfコマンドの実例を見てみましょう。

df -h


コマンド実行結果例

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   15G  4.0G  80% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   12M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sdb1       100G   30G   70G  30% /data


まずは各フィールド名を説明しますね。

Filesystemファイルシステム名
Size総容量
Used使用済み容量
Avail空き容量
Use%使用率
Mounted onマウントポイント


コマンド実行結果例から、ルートファイルシステム(/)が80%使用されていることや、データディレクトリ(/data)が30%使用されていることがわかります。

dfコマンド見るべきポイント

dfコマンド見るべきポイントは3点です。

  • Use%(使用率)
     各ファイルシステムの使用率を確認します。80%を超えると注意が必要です。

  • Avail(空き容量)
     空き容量が少なくなっていないか確認します。特に重要なシステムディレクトリ(例:/)の空き容量に注意します。

  • Mounted on(マウントポイント)
    重要なディレクトリがどのファイルシステムにマウントされているかを確認します。


3. psコマンドでプロセス状況を把握しよう

psコマンドは、現在実行中のプロセスに関する情報を取得するためのコマンドです


プロセスID(PID)、親プロセスID(PPID)、実行中のユーザー、CPU使用率、メモリ使用率、実行時間、コマンド名など、さまざまな情報を表示することができます。CPU使用率が高い場合にまず利用するコマンドです。

psコマンドコマンド例

psコマンドの基本的な使い方と、便利なオプションを紹介します。

基本的な使用方法
ps

これは、現在のシェルセッションで実行中のプロセスを表示します。

すべてのプロセスを表示
ps -e

-eオプションは、システム上のすべてのプロセスを表示します。

詳細情報を表示
ps -ef

-fオプションを組み合わせることで、詳細なプロセス情報を表示します。これは、プロセスID(PID)、親プロセスID(PPID)、ユーザー、開始時間、実行中のコマンドなどを含みます。

リアルタイムでプロセス情報を表示
ps aux --sort=-%mem | head -n 10

“ps -ef"と並んで、よく使うオプションです。auxオプションはすべてのユーザーとすべてのターミナルのプロセスを表示し、–sort=-%memでメモリ使用量の降順にソートし、最初の10行だけを表示します。

psコマンドユースケース

psコマンドは次のようなケースで使われます。

  • システムの監視
     システム管理者はpsコマンドを使用して、システム上で実行中のプロセスを監視し、リソースの消費が多いプロセスを特定します。これにより、システムパフォーマンスの低下や過負荷の原因を突き止めることができます。

  • プロセスのトラブルシューティング
     異常動作しているプロセスを特定し、そのプロセスを終了(kill)するために使用されます。例えば、応答しないアプリケーションやリソースを大量に消費しているプロセスを発見する際に便利です。

  • プロセスの詳細情報取得
    特定のプロセスに関する詳細情報を取得するために使用されます。例えば、特定のユーザーが実行しているプロセスや、特定の親プロセスID(PPID)に関連するプロセスを表示できます。


psコマンド実例

psコマンドの実例を見てみましょう。

ps -ef


コマンド実行結果例

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 08:00 ?        00:00:04 /sbin/init
root       543     1  0 08:00 ?        00:00:01 /usr/lib/systemd/systemd-journald
root       611     1  0 08:00 ?        00:00:00 /usr/sbin/sshd -D
user1      823   611  0 08:01 ?        00:00:00 sshd: user1 [priv]
user1      825   823  0 08:01 ?        00:00:00 sshd: user1@pts/0
user1      826   825  0 08:01 pts/0    00:00:00 -bash

まずは、各フィールド名を説明しますね。

UIDプロセスの所有者
PIDプロセスID
PPID親プロセスID
CCPU使用率
STIMEプロセスの開始時間
TTY端末タイプ
TIMEプロセスが使用したCPU時間
CMD実行中のコマンド

コマンド実行結果例から、システムの初期化プロセス(/sbin/init)、SSHデーモン(/usr/sbin/sshd)、および現在ログインしているユーザー(user1)のシェルセッション(-bash)が実行中であることがわかります。

psコマンド見るべきポイント

psコマンド見るべきポイントは5点です。

  • C(CPU使用率)
     高いCPU使用率のプロセスを確認します。異常に高い場合は調査が必要です。

  • UID(ユーザーID)
     特定のユーザーが実行しているプロセスを確認します。不審なユーザーがいないかチェックします。

  • CMD(コマンド)
     実行されているコマンドを確認します。異常なコマンドが実行されていないかチェックします。

  • STIME(開始時間)
     プロセスの開始時間を確認します。長時間実行されているプロセスに注意が必要です。

  • PPID(親プロセスID)
     プロセスの親子関係を確認し、特定の親プロセスに関連するプロセスを見つけます。


4. freeコマンドでメモリ使用状況を把握しよう

freeコマンドは、システムの物理メモリおよびスワップメモリの使用状況を表示するコマンドです。


総メモリ量、使用中のメモリ量、空きメモリ量、バッファ・キャッシュに使用されているメモリ量などの情報を提供します。

freeコマンド例

freeコマンドの基本的な使い方と、便利なオプションを紹介します。

基本的な使用方法
free

これは、メモリ使用状況をKB単位で表示します。

人間に読みやすい形式で表示
free -h

-hオプションは、人間が読みやすい形式(KB、MB、GBなど)でメモリ使用状況を表示します。dfやlsコマンドなど、-hオプションをつけると見やすくなります。

バッファとキャッシュを分離して表示
free -m

-mオプションは、メモリ使用状況をMB単位で表示します。同様に、-gオプションを使用するとGB単位で表示できます。

バッファ・キャッシュメモリの詳細情報を含める
free -t

-tオプションは、物理メモリとスワップメモリの合計を含めたメモリ使用状況を表示します。

指定した間隔で繰り返し表示
free -s 5

-sオプションは、指定した間隔(この例では5秒)でメモリ使用状況を繰り返し表示します。これはリアルタイムでメモリ使用状況を監視するのに役立ちます。監視用のソフトウェアやサービスが使えない状況があるので、ぜひ覚えておいてください。


freeコマンドユースケース

freeコマンドは次のようなケースで使われます。

  • システムパフォーマンスの監視
     システム管理者はfreeコマンドを使用して、システムのメモリ使用状況を監視します。特に、メモリが不足している場合やスワップメモリが多く使用されている場合にシステムパフォーマンスが低下する可能性があるため、これを確認するために使用します。

  • トラブルシューティング
     システムの応答が遅い場合やアプリケーションのパフォーマンスが低下している場合に、freeコマンドを使用してメモリの使用状況を確認し、メモリ不足が原因であるかどうかを判断します。

  • リソース計画
     新しいアプリケーションやサービスをデプロイする際に、システムの現在のメモリ使用状況を確認し、追加のリソースが必要かどうかを判断するために使用します。


freeコマンド実例

freeコマンドの実例を見てみましょう。

free -h


コマンド実行結果例

              total        used        free      shared  buff/cache   available
Mem:            7.8G        2.1G        3.3G         80M        2.4G        5.3G
Swap:           2.0G          0B        2.0G


まずは、各フィールド名を説明しますね。

total総メモリ量
used使用中のメモリ量
free空きメモリ量
shared共有メモリ量
buff/cacheバッファ・キャッシュに使用されているメモリ量
available使用可能なメモリ量
Swapスワップ領域の使用状況


コマンド実行結果例から、物理メモリ(Mem)のうち約2.1GBが使用中であり、3.3GBが空き、バッファ・キャッシュに2.4GBが使用されていることがわかります。また、スワップメモリは使用されていないことがわかります。

freeコマンド見るべきポイント

freeコマンドで見るべきポイントは5点です。

  • used(使用中のメモリ)
     メモリ使用量が非常に高い場合、システムのパフォーマンスに影響を与える可能性があります。

  • free(空きメモリ)
     空きメモリが十分か確認します。空きメモリが少ない場合、追加のメモリが必要かどうかを検討します。

  • buff/cache(バッファ・キャッシュ)
     一時的なバッファやキャッシュに使用されているメモリ量を確認します。多くのメモリがキャッシュに使われている場合は、必要に応じて解放されることが多いです。

  • available(利用可能メモリ)
     使用可能なメモリ量を確認します。これが非常に少ない場合は、メモリ不足の兆候です。

  • Swap(スワップメモリ)
     スワップメモリの使用量を確認します。スワップの使用が多い場合は、物理メモリが不足している可能性があります。


5. 結論

df、ps、freeコマンドを使いこなすことで、サーバのリソース使用状況を効果的に監視できます。プロジェクトに参画したら、いち早く状況を把握するためにこれらのコマンドを習得し、サーバ管理のスキルを向上させましょう。

改めて、今日の復習です。

復習:組み合わせてサーバの状況を把握する

df、ps、freeコマンドを使うことで、以下のようにサーバの全体的な状況を把握することができます。

  • ディスク使用状況(dfコマンド)
     どのファイルシステムがどれだけ使用されているかを確認する。

  • プロセス状況(psコマンド)
     どのプロセスが実行中で、どのユーザーがどのプロセスを実行しているかを確認する。

  • メモリ使用状況(freeコマンド)
     物理メモリとスワップメモリの使用状況を確認し、システムのメモリリソースが適切に管理されているかを確認する。



ネクストステップとして、「df, ps, freeコマンド」に慣れたら、自作のシステム監視スクリプトを作ってみるのもいいかもしれません


↓【PR】今回参考にした書籍です。発行年は古いですが、考え方やLinuxとの向き合い方がわかる良書です。



参考リンク:df, ps, free