diff使用時の「df -h」サイズ変更を無視

diff使用時の「df -h」サイズ変更を無視

矛盾がないかどうかを確認するために、サーバーを再起動する前後に他の多くの基本サービスのファイルシステムを比較しようとしています。

現在のデータをファイルに保存し、以下を使用して比較しています。違い注文する

多くのサーバーでは、以下に示すようにFSサイズの違いも確認するため、効率的ではありません。

diff -rs ./prechecks/file ./postchecks/file
10c10
< udev                                                                  7.8G  164K  7.8G   1% /dev
---
> udev                                                                  7.8G  156K  7.8G   1% /dev
13c13
< /dev/mapper/vg01-lvopt_IBM                                            9.9G  8.2G  1.2G  88% /opt/IBM
---
> /dev/mapper/vg01-lvopt_IBM                                            9.9G  8.3G  1.2G  88% /opt/IBM
18,19c18,19

無視オプションを使用できるかどうか試しましたが、ロジックを理解できませんでした。

私たちがこの問題を克服できることを確認したいと思います。一度に数百台のサーバーを処理する必要があるため、費用がかかります。

それ以外の場合は、以下のようにdf -h出力でtab-size;used;useful;using%;を無視する方法はありますか?これにより、最初からスキャンが削除されます。

Filesystem                                      Size  Used Avail Use% Mounted on
/dev/mapper/vg00-lvroot                          20G   16G  4.5G  78% /

私の問題を解決するのに役立ちます。ありがとうございます。 !

編集1: df --output=source,fstype,target最初の選択でしたが、他のサーバーではこれを行うことはできません。 df: unrecognized option '--output=source,fstype,target' 詳細については、「df --help」を試してください。他の解決策がありますか?

答え1

マウントポイントのみを比較するには、mountコマンド自体ではなくコマンドの出力を比較する必要があります。df

また、マウントオプションとファイルシステムタイプを比較するのも良いかもしれません。

$ mount
server:/export/client/root on / type nfs (v3, udp, timeo=100, retrans=101)
server:/export/shared/usr on /usr type nfs (nodev, wxallowed, v3, tcp, soft, intr, timeo=100)
amd:20004 on /home type nfs (v2, udp, intr, timeo=100, retrans=101)
server:/export/shared/home on /tmp_mnt/server/export/shared/home type nfs (nodev, nosuid, v2, udp, soft, intr, timeo=100)

答え2

tab-size;used;useful;using%; を無視する方法はありますか?

コマンドdf出力フィールドは--outputオプションで調整できます。

df -h --output='source'

上記内容は出力されます。ファイルシステムリスト

Filesystem
/dev/mapper/vg00-lvroot

- 出力[=FIELD_リスト]
FIELD_LISTで定義された出力形式を使用するか、FIELD_LISTが省略されている場合はすべてのフィールドを印刷します。


一部のオプションがサポートされていない場合は、次の回避策を試してくださいawk

df -h | awk '{print $1}'

答え3

GNU diff には変更を無視する 2 つの方法があります。スペースや大文字と小文字など、特定の種類の違いを無視するオプションがありますが、これはいくつかのプリセットに制限されています。特定のパターンに一致する行を無視するオプションもありますが、このオプションを使用すると、行内の特定の変更ではなく行のみを無視できます。空白の変更を無視する(diff -w)は、列の形式が異なる幅で指定されている場合に役立ちますが、特定の数字を無視するには別のものが必要です。

いくつかの違いを無視する一般的な方法は、2つのファイルを前処理して無視したい部分を削除または正規化することです。たとえば、ボリューム名とマウントポイントにスペースがないとし、使用済み/空き/パーセント列を無視するには、次のようにします。

awk '{print $1, $2, $6}'

前処理装置として。列挙順序の違いはdf重要ではないため、すでにソートしていない場合はファイルをソートすることもできます。プロセス置換(ksh、bash、zsh)を持つシェルでは:

diff <(<./prechecks/file awk '{print $1, $2, $6}' | sort) \
     <(<./postchecks/file awk '{print $1, $2, $6}' | sort)

多くのファイルに対してこれを行う場合diff -rs

答え4

このコマンドの出力を考慮することもできますlsblk。これは Linux 専用ユーティリティですが、まだマウントされていない場合でも、すべてのブロックデバイスを一覧表示します。-nヘッダーを無効にするこのオプションと必要な列を-o指定できるオプションについては、マニュアルページを参照してください。

関連情報