Disk-Usage
如何從 df 輸出中過濾只讀文件系統?
我
df
用來檢查我掛載的任何文件系統是否接近滿。我有一個 cron 工作,如果其中任何一個的使用率超過 90%,就會向我發送電子郵件。問題是現在使用 snap 安裝了一些應用程序(Ubuntu 發行版),它創建了一個專門為該應用程序安裝的只讀文件系統。正如 報告的那樣,它們始終是 100% 滿的
df
。我想這是合適的,因為它們是只讀的並且不能更完整。我想將它們從df
輸出中排除。
df
有一個-x, --exclude-type=TYPE
命令行標誌,看起來它可能會有所幫助,但手冊頁沒有記錄可能的值,TYPE
所以我不確定是否可以使用它來排除只讀文件系統。
df
這是我的一個系統上的輸出範例:$ 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
我想刪除所有這些完整的快照條目以及將來可能以只讀方式安裝的任何其他文件系統。
中使用的文件系統類型
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)
是的,snap 侵入文件系統列表可能很煩人……
你在正確的路線上
df -x...
。所有快照都使用只讀 Squashfs 文件系統1,因此您可以使用以下命令將它們全部過濾掉:df -xsquashfs