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



