「df -hl」でディスク使用率を印刷する方法

「df -hl」でディスク使用率を印刷する方法

df -hlサイズ、使用されている割合、空き容量を含むすべてのパーティションのリストが出力されることがわかります。

たとえば、sumのサイズと使用量のみを出力したい場合は、sda2Linux(Ubuntu)にチェックして合計して表示するように指示しますか?sda3

答え1

df合計を計算するには、--totalsオプションを使用してください。選択した一部のドライブの合計のみを計算するには、そのドライブをパラメータとして指定します。

はい(およびマイコンピュータの出力)

すべてのローカルインストールの合計は次のとおりです。

$ df --total -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
none                  490M  660K  489M   1% /dev
none                  497M  1,5M  495M   1% /dev/shm
none                  497M  260K  496M   1% /var/run
none                  497M     0  497M   0% /var/lock
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  19G   12G  7,3G  62%

いくつかのドライブに制限されます。 (指定されたパスが正しいマウントポイントではない場合は、最も近いマウントポイントが使用されます。[文末の注意事項参照]):

$ df -hl --total /home /fastdisk
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  17G   12G  5,3G  69%

またはdev名前を使用してください:

$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
/dev/sdb1              14G   12G  2,1G  85% /
total                  17G   12G  5,3G  69%

追加のカスタマイズ

「特殊」インストールを除くすべてのインストールを一覧表示するには、-xパーティションタイプごとに除外するオプションを使用できます。 (-Tタイプを表示するには、このオプションを使用してください。)

個人的にインタラクティブに使用するには、次のbashエイリアス(に追加~/.bash_aliases)を使用して「非物理」インストールを除外します。

alias df='df -h -x devtmpfs -x tmpfs -x debugfs'

ノート

マウントポイント内でパスを指定すると、マウントポイントへの正確なパスを指定する以外の結果が表示されることがあります。たとえば、私のラップトップにsshfs(ローカル)ファイルサーバーをインストールするために使用します。

df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem            Size  Used Avail Use% Mounted on
johan@server:/        185G   58G  118G  33% /home/johan/.server-root
johan@server:/        1,9T  637G  1,2T  35% /home/johan/.server-root
johan@server:/        1,8T  1,1T  757G  59% /home/johan/.server-root

サーバールート(/)はにインストールされます~/.server-root。ただし、サーバーではディスクがマウントされており、ラップ/disks/*トップdfではこれを「知りません」。

正しいパスが与えられたら、dfサーバーのさまざまなインストールのディスク使用量を一覧表示することができます。ただし、すべてのパスに対して同じ「ファイルシステム」と「マウント先」が表示されます。(私は信じる)sshfsこれはローカルカーネルマウントテーブルの唯一のマウントポイントです(このマウントに関連付けられています)。


もう一つのこと:質問には関係ありませんが、関連があります。以前の回答この質問に。

awk以前に公開された回答の一部など、スクリプト(または類似)を使用して数字を追加することは、いいえロゴを使用するときは良いアイデアです-h。特別な処理が必要だからです。ある行と別の行のフィールドを操作してsize+=$2;有用な情報を得ることはできません。418M12G

たとえば、利回りに awk追加500M10.2G

$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2

510.2 何?

ここには明らかに何か問題があります。だから、覚えておくという通知のように,出力の(自動)計算中df (そして他の利用可能なもの「人が読める」数字)。ぜひこうやってくださいいいえこの-hフラグを使用すると、計算スクリプトへの入力が正規化されます(たとえば、バイト、ブロック、KB、またはその他)。「拡大/縮小表示」最後に。ほとんどのスクリプトとプログラミング言語では、次のようなものを追加することは難しくありません。

If value < threshold Then
  print (value),"B"
Else If value < 1024*threshold Then
  print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
  print (value/1024/1024),"MB"
(and so on...)

どこバイト単位と臨界点約1000程度の値です。この方法の結論は、所望の有効桁数で所望の範囲(プレフィックスを除く)の印刷値を生成するように容易に調整できることである。-h一般に、フォーマットが固​​定されているスイッチを備えた標準ユーティリティの場合と比較してみてください。

もちろん、この種の計算はより効率的またはエレガントに行うことができますが、これは作成される特定の言語の問題です。正直に使ってみるとユーザースクリプト時々実行してインタラクティブに情報を確認すると、効率は実際には問題になりません。

答え2

私の考えでは、両方をsize合計したいと思います。use%

 df -hl | grep 'sda2\|sda3' | awk 'BEGIN{print "Size","Use%"} {size+=$2;percent+=$5;} END{print size,percent}' | column -t

答え3

次のツールを使用できますawk

df -hl | awk '/^\/dev\/sd[ab]/ { sum+=$5 } END { print sum }'

どこ:

  • /^\/dev\/sd[ab]//dev/sdaまたはで始まる行だけをフィルタリングするパターン。/dev/sdb
  • { sum+=$5 }上記のパターンに一致する項目に5番目のフィールドを追加します。

awk以下に役立つ参考資料を見つけることができます。awk.info Wiki

答え4

通知が必要な場合は、IFTTT、Telegram、WebHooks(すべて無料)をご利用いただけます。

#!/bin/bash
diskusage=$(df -H | grep -vE '^Filesystem|tmpfs|cdrom|mmcblk0p1' | awk '{ print $5 " " $1 }'| cut -f1 -d '%')
hostname=$(hostname)
tolerance=(85)
date=$(date)

if [[ "$diskusage" -gt "$tolerance" ]]
        then
        echo ""
        echo total disk usage is $diskusage%
        echo ""
        curl -X POST -H "Content-Type: application/json" -d '{"value1":"--Alert--","value2":"Total disk usage is '$diskusage'% ","value3":"Host information: '$hostname' "}' https://maker.ifttt.com/trigger/{alert}/with/key/PutYourKeyHEre
fi
echo ''
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date >> /var/log/IFTTT/checkdiskspace.log

関連情報