はじめに
このチャレンジでは、特定のファイルシステムがマウントされているかどうかを確認するシェルスクリプトを作成します。スクリプトは引数としてファイルシステム名(例: /dev/vda1)を受け取ります。df コマンドを使用して、そのファイルシステムが現在マウントされているかどうかを判定します。マウントされている場合は、使用率と利用可能な空き容量を表示し、マウントされていない場合は適切なエラーメッセージを表示します。
マウントされたファイルシステムの使用状況を確認する
このチャレンジの目標は、指定されたファイルシステムのステータスを報告するスクリプトを作成することです。スクリプトは、確認対象のファイルシステム名をコマンドライン引数として1つ受け取ります。
タスク
スクリプトは以下の処理を行う必要があります:
- ファイルシステムを表すコマンドライン引数を1つ受け取る(例:
df --output=sourceでリストされるソース)。 - 指定されたファイルシステムが現在システムにマウントされているかを確認する。
- ファイルシステムがマウントされている場合、その使用率と利用可能な空き容量(KB単位)を表示する。
- ファイルシステムがマウントされていない場合、または引数の数が正しくない場合は、明確なエラーメッセージを表示する。
要件
以下の要件に従う必要があります:
- スクリプト名は
mount.shとし、~/projectディレクトリに配置すること。 - ファイルシステム情報の取得には
dfコマンドを使用すること。 - シェルの配列と
forループを使用してファイルシステムデータを処理すること。 - 引数の数が正しくない場合のエラーハンドリングを行うこと。
例
有効なマウント済みファイルシステムを指定してスクリプトを実行した場合の動作例です。
labex:project/ $ bash mount.sh <mounted-filesystem>
Filesystem <mounted-filesystem> is 19% used with 85748032 KB free.
マウントされていないファイルシステムを指定した場合の例です:
labex:project/ $ bash mount.sh /nonexistent
Error: Filesystem /nonexistent is not mounted.
注意: 例にある使用率や空き容量の値はあくまで例示です。実際の出力は、環境内で選択したマウント済みファイルシステムの現在の状態を反映します。
ヒント
df --output=sourceを使用すると、マウントされているすべてのファイルシステムソースのリストを取得できます。- コマンドの出力を配列に格納するには、
my_array=($(command))という構文を使用できます。 $#を使用して、スクリプトに渡された引数の数を確認することを忘れないでください。
まとめ
このチャレンジでは、ファイルシステムの使用状況を監視するシェルスクリプトの作成に成功しました。コマンドライン引数の処理方法、特定の出力オプションを指定した df コマンドの使用方法、およびコマンドの出力を配列に格納する方法を学びました。また、for ループを使用して配列を反復処理し、特定のファイルシステムに関する情報を検索・表示する練習も行いました。このチャレンジを通じて、シェルスクリプト、テキスト処理、およびシステム情報取得に関するスキルが強化されました。



