Linuxサーバー情報の取得

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Linuxサーバー上のシステム情報を取得して表示する方法を学びます。作成するgetinfo.shスクリプトを使って、サーバーのハードウェア、ソフトウェア、ネットワーク構成に関する重要な詳細を迅速に収集できます。

👀 プレビュー

$ sh getinfo.sh
## 例
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X

🎯 タスク

このプロジェクトでは、以下を学びます。

  • CPUの数、総メモリ、利用可能なメモリ、ディスクサイズ、システムビット数、実行中のプロセス数、インストールされているソフトウェアパッケージ数、およびサーバーのIPアドレスを取得する方法。
  • grepfreedfgetconfpsdpkg-queryipなどの様々なLinuxコマンドとツールを使ってシステム情報を収集する方法。
  • これらのコマンドを組み合わせて、サーバーの状態の包括的な概要を提供するzshスクリプトを書く方法。

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • シェルスクリプトを使ってシステム情報の自動収集方法を理解する。
  • 一般的なLinuxコマンドとその応用に慣れる。
  • 重要なサーバーの詳細を迅速に取得して表示するために実行できる再利用可能なスクリプトを作成する。
  • 新しく習得した知識を使って、Linuxシステムの監視とトラブルシューティングをより効果的に行う。

getinfo.sh スクリプトを作成する

このステップでは、/home/labex/project ディレクトリに getinfo.sh スクリプトを作成します。

  1. テキストエディタを開き、/home/labex/project ディレクトリに新しいファイルを作成して、getinfo.sh と名付けます。

  2. ファイルの先頭に以下のシェバン行を追加します。

    #!/bin/zsh

    この行は、スクリプトを zsh シェルを使って実行することを指定します。

  3. スクリプトに以下のコメントを追加します。

    ## getinfo.sh - Linux System Information Script
    ## This script retrieves CPU, memory, disk, and other information of a Linux server.

    これらのコメントは、スクリプトの目的を簡単に説明しています。

  4. ファイルを保存します。

CPU情報を取得する

このステップでは、getinfo.sh スクリプトにCPUの数を取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: CPU情報を取得する
    cpu_num=$(grep -c '^processor' /proc/cpuinfo)

    この関数は、grep コマンドを使って /proc/cpuinfo ファイル内のプロセッサエントリの数を数え、それがCPUの数を表します。

  3. スクリプトの変更を保存します。

メモリ情報を取得する

このステップでは、getinfo.sh スクリプトに総メモリサイズと利用可能なメモリサイズを取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: 総メモリサイズ (GB単位) を取得する
    memory_total=$(free -g | awk '/^Mem:/ {print $2}')
    
    ## 関数: 利用可能なメモリサイズ (MB単位) を取得する
    memory_free=$(free -m | awk '/^Mem:/ {print $4}')

    最初の関数は、free コマンドに -g オプションを付けてギガバイト単位の総メモリサイズを取得します。2番目の関数は、free コマンドに -m オプションを付けてメガバイト単位の利用可能なメモリサイズを取得します。

  3. スクリプトの変更を保存します。

ディスク情報を取得する

このステップでは、getinfo.sh スクリプトにルートディレクトリにマウントされたファイルシステムの総サイズを取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: ルートファイルシステムの総ディスクサイズ (GB単位) を取得する
    disk_size=$(df -h / | awk '/\// {print $2}')

    この関数は、df コマンドに -h オプションを付けてルートディレクトリ (/) にマウントされたファイルシステムの総サイズを取得し、その後 awk を使ってサイズ値を抽出します。

  3. スクリプトの変更を保存します。

システムビット情報を取得する

このステップでは、getinfo.sh スクリプトにシステムビット情報を取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: システムビットを取得する
    system_bit=$(getconf LONG_BIT)

    この関数は、getconf コマンドを使ってシステムが使用するビット数を取得します。

  3. スクリプトの変更を保存します。

プロセス情報を取得する

このステップでは、getinfo.sh スクリプトに現在実行中のプロセスの数を取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: 現在実行中のプロセスの数を取得する
    process=$(ps -ef | wc -l)

    この関数は、ps コマンドを使ってすべての実行中のプロセスを一覧表示し、その後 wc コマンドを使って行数を数えます。

  3. スクリプトの変更を保存します。

ソフトウェア情報を取得する

このステップでは、getinfo.sh スクリプトにインストールされているソフトウェアパッケージの数を取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: インストールされているソフトウェアパッケージの数を取得する
    software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)

    この関数は、dpkg-query コマンドを使ってインストールされているすべてのソフトウェアパッケージを一覧表示し、その後 wc コマンドを使って行数を数えます。

  3. スクリプトの変更を保存します。

IPアドレス情報を取得する

このステップでは、getinfo.sh スクリプトにeth0ネットワークインターフェイスのIPアドレスを取得する関数を追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の関数を追加します。

    ## 関数: eth0のIPアドレスを取得する
    ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')

    この関数は、ip コマンドを使ってeth0ネットワークインターフェイスのIPアドレスを取得し、その後 awksed を使ってIPアドレスを抽出します。

  3. スクリプトの変更を保存します。

システム情報を出力する

この最後のステップでは、getinfo.sh スクリプトにシステム情報を表示する出力セクションを追加します。

  1. テキストエディタで getinfo.sh スクリプトを開きます。

  2. スクリプトに以下の出力セクションを追加します。

    ## 情報を出力する
    echo "cpu num: $cpu_num"
    echo "memory total: $memory_total G"
    echo "memory free: $memory_free M"
    echo "disk size: $disk_size"
    echo "system bit: $system_bit"
    echo "process: $((process - 1))"
    echo "software num: $software_num"
    echo "ip: $ip"

    このセクションは、echo コマンドを使って必要な形式でシステム情報を表示します。

  3. スクリプトの変更を保存します。

おめでとうございます! これで getinfo.sh スクリプトの作成が完了しました。 ターミナルで以下のコマンドを実行することでスクリプトを実行できます。

sh getinfo.sh

スクリプトはプロジェクト要件で指定されたシステム情報を出力します。

## 例
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X
✨ 解答を確認して練習

まとめ

おめでとうございます! このプロジェクトを完了しました。 スキルを向上させるために、LabExでさらに多くの実験を行って練習できます。