私はこれを使ってdf
マウントされたファイルシステムがいっぱいであることを確認します。私はそのうちの1つでも90%以上の使用量を得たら私に電子メールを送るcronタスクを持っています。
問題は、一部のアプリケーション(Ubuntuディストリビューション)がスナップを使用して、そのアプリケーション用に特別にマウントされた読み取り専用ファイルシステムを作成することです。報告されているように常に100%いっぱいですdf
。読み取り専用で完璧にできないので、これは適切だと思います。df
出力から除外したいです。
df
-x, --exclude-type=TYPE
役に立つコマンドラインフラグがありますが、マニュアルページには可能な値が文書化されていないため、TYPE
それを使用して読み取り専用ファイルシステムを除外できるかどうかはわかりません。
df
以下は私のシステムの1つの出力例です。
$ df --output=pcent,target
Use% Mounted on
0% /dev
1% /run
7% /
1% /dev/shm
1% /run/lock
0% /sys/fs/cgroup
100% /snap/gnome-3-26-1604/74
100% /snap/gnome-characters/139
100% /snap/core/5662
100% /snap/gnome-system-monitor/57
100% /snap/gnome-calculator/238
100% /snap/gnome-logs/45
100% /snap/gtk-common-themes/701
100% /snap/core/5742
cronが実行するスクリプトは次のとおりです。
#!/bin/bash
set -e
THRESHOLD_PERCENT=90
host=`hostname -f`
df --output=pcent,target | while read line
do
if [[ "$line" != Use* ]]
then
percent=${line/\%*/};
if (( percent >= THRESHOLD_PERCENT ))
then
file=${line/* /}
echo "$percent% disk usage on $host:$file"
fi
fi
done
これらのフルスナップショットエントリと、後で読み取り専用でマウントできる他のファイルシステムの両方を削除したいと思います。
答え1
はい、ファイルシステムのリストに対するスナップの侵入は迷惑になる可能性があります。
あなたは正しいですdf -x
-スナップクラフトすべてのスナップショットは読み取り専用のSquashfsファイルシステムを使用するため、以下を使用してすべてをフィルタリングできます。
df -xsquashfs
答え2
で使用されているファイルシステムの種類は、df
ファイルシステムの形式を表しますext4
。
/proc/mounts
フィルタリング(または出力)を介してmount
読み取りおよび書き込みファイルシステムを見つけ、rw
それを使用して出力をフィルタリングできますdf
。
リストに表示したくないアイテムも含まれているため、ここrw
にあるすべてのアイテムを使用することはできません。/proc/mounts
/proc
編集する
#!/bin/bash
df --output=pcent,target | grep -f <(awk '$4 ~ /^rw.*/ { print $2"$" }' /proc/mounts)
答え3
私が知る限り、dfはマウントコマンドを持っているので、マウントオプションについて知りません。これを使用してデバイスのリストを取得し、dfに引数として渡すことができます。
df --output=pcent,target $(mount -t ext4 | grep rw | cut -d" " -f1)
これはファイルシステムext4に基づいてフィルタリングし、マウントオプションを使用してファイルシステムをgrepし、rw
dfで使用する出力をクリーンアップし、デバイスリストをdfに渡します。mount
のコマンドを使用して、$(...)
目的に合わせてフィルタリングを調整できます。