回答:
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
テーブルをマウントローカルカーネルに実装します)。
もう1つは、質問に実際には関連していないが、質問に対する以前の回答に関連していることです。
awk
以前に投稿されたいくつかの回答のように、スクリプト(または同様の)で数値を加算することは、フラグを使用する場合にはお勧めできません-h
。これは、特別な処理が必要だからです。ある行と別の行にsize+=$2;
あるフィールドに対してだけ実行して、そこから何か有用なものを取得することはできません…418M
12G
の例ではawk
、利回りに追加500M
し 10.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
多くの場合、形式が修正されるスイッチ付きの標準ユーティリティの場合と比較します。
もちろん、この計算は多くの場合、より効率的かつ/またはエレガントにすることができますが、それはそれが書かれている特定の言語の問題です。率直に言って、対話的に表示するためだけに実行されるユーザースクリプトで使用する場合いくつかの情報、効率は実際に懸念ではありません。
私はあなたの両方の合計を望んでいたと思うsize
し、use%
df -hl | grep 'sda2\|sda3' | awk 'BEGIN{print "Size","Use%"} {size+=$2;percent+=$5;} END{print size,percent}' | column -t
size+=$1
)を使用しない理由について少し詳しく説明しました。この方法は、実際にはの-h
オプションと互換性がありませんdf
。
次のようなツールを使用しますawk
。
df -hl | awk '/^\/dev\/sd[ab]/ { sum+=$5 } END { print sum }'
どこ:
/^\/dev\/sd[ab]/
/dev/sda
またはで始まる行のみをフィルタリングするパターンです/dev/sdb
{ sum+=$5 }
上記のパターンと一致する場合、5番目のフィールドを追加しますAwk.info wikiで役立つawk
リファレンスを見つけることができます。
アラートを使用したい場合は、IFTTT、Telegram And 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