ファイルシステムの利用は、システム、つまりすべてのドライブの空き容量と使用スペースを計算する方法です。ドライブがしきい値制限を超える場合は、スペース使用量に基づいて最初の10個のファイルまたはディレクトリを印刷する必要があります。制限は、使用されているメモリ%と同じにすることができます。
Linux/AIX 用の bash スクリプトの作成をお手伝いします。
答え1
調査するIBM Knowledge Center必要なコマンドの違いは解決されたようです。通知された、AIXではテストできなかったため、上記のサイトでAIXの違いについて学んだ内容に基づいて作成しました。標準のGNU / Linuxツールの特定のオプションを無視する前によくテストされています。 YMMV。
まず、ファイルシステムのリスト、各ファイルシステムで使用される割合、ファイルシステムのサイズ(閉じることができない)、および後で処理する必要があるマウントポイントを取得できます。使用すると、df -F %z %m
次の結果が返されます。これは/dev/sda1 1545476 78% /home
、デバイスにインストールされている1545476ブロックのうち78%が使用中であることを意味します。/dev/sda1
/home
さらなる調査のために、ファイルシステムとマウントポイントと使用されたパーセント(「%」記号を除く)だけがわかるので、sed
出力を使用して修正しますawk
。これを行うときは、最初にuasgeと入力し、名前を2番目に指定し、実際のファイルシステムを表す行を削除して、各ファイルシステムのマウントポイントを取得することもできます。これにより、将来の処理が容易になります。最後に、最も重要な項目が最初に表示されるように、使用率に基づいて降順に並べ替えることができます。これにより、次のコマンドが提供されます。
df -F %z %m | grep -e '^/dev/[sh]d' | sed 's/%//g' | awk '{print $3" "$1" \""$4"\""}' | sort -rn
1行の最終出力は次のとおりです78 /dev/sda1 /home
。
これで、各行を読み取ってプリセット(ここでは75に設定)に従って、必要に応じて処理するループへの入力として使用できます。action_limit
実行権限を持つシェルスクリプトとして保存します。
#!/bin/bash
action_limit=75;
df -F %z %m \
| grep -e '^/dev/[sh]d' \
| sed 's/%//g' \
| awk '{print $3" "$1" "$4}' \
| sort -r -n \
| while read -r pct dsk mnt; do
if test $action_limit -le $pct; then
echo "$mnt for $dsk is using ${pct}%";
fi;
done
echo
これで適切なファイルシステムがわかったので、そのファイルシステムで実行したい操作のコマンドで行を置き換える必要があります。このecho
コマンドは、他のコマンドを呼び出す必要がある場所を示し、スクリプトに渡すことができる情報を表示します。すべてを使用する必要はありません。おそらく$mnt
取り付けポイントだけが必要です。スペースやその他の危険なシェル文字を含む可能性のあるディレクトリパスは、他のスクリプトまたはコマンドの引数$mnt
として使用するときに引用符で囲む必要があります。
サイズごとに適切なファイルシステムの最上位のファイル/ディレクトリのみを一覧表示するために呼び出すまったく新しいスクリプトを作成する必要はありません。上記のコマンドを追加して、変更されたシェルスクリプトを提供できます。
#!/bin/bash
action_limit=75;
top_count=10;
df -F %z %m \
| grep -e '^/dev/[sh]d' \
| sed 's/%//g' \
| awk '{print $3" "$1" "$4}' \
| sort -r -n \
| while read -r pct dsk mnt; do
if test $action_limit -le $pct; then
echo "$mnt for $dsk is using $pct%";
du -s -x -m "$mnt"/* | sort -rn | head -$top_count| awk '{SZ=$1;$1="";print "\t"SZ"\t"$0}';
fi;
done
出力は、設定された制限を満たすか超過するファイルシステムに基づいて降順にソートされ、action_limit
その後、そのファイルシステムで最も多くのスペースを使用するファイルまたはディレクトリがソートされます。リストされているファイルまたはディレクトリの数は新しい変数によって設定されますtop_count
。きれいで読みやすくするために、マウントポイントの下にインデントされており、各ファイルまたはディレクトリの合計サイズ(MB)が含まれています。 (制御してキロバイトまたはギガバイトに-m
変更できます。メガバイトは良いトレードオフのようです。)-k
-g
最後にタグを使用しているため、/bash
すべてのテストが内部で完了し、bash
bash固有のテストまたは構文が使用されている場合は、それをキャッチできませんでした。したがって、他のシェルがある場合は、信頼する前に慎重にテストしてください。