我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
我想删除所有这些完整的快照条目以及将来可能以只读方式安装的任何其他文件系统。
是的,snap 侵入文件系统列表可能很烦人......
你在正确的路线上
df -x...
。所有快照都使用只读 Squashfs 文件系统1,因此您可以使用以下命令将它们全部过滤掉:中使用的文件系统类型
df
是指文件系统的格式,如ext4
./proc/mounts
您可以通过过滤(或 的输出mount
)找到读写文件系统rw
,然后使用这些过滤df
.您不能使用其中的所有
rw
条目,/proc/mounts
因为其中还包含/proc
您不希望出现在列表中的条目。编辑
据我所知,df 不知道挂载选项,因为有 mount 命令。您可以使用它来获取设备列表并将其作为参数传递给 df. 像这样:
df --output=pcent,target $(mount -t ext4 | grep rw | cut -d" " -f1)
这会按文件系统 ext4 过滤,然后对具有挂载选项的那些进行 greps
rw
,清理要用于 df 的输出,然后将设备列表传递给 df。您可以使用其中的mount
命令$(...)
来根据您的目的进行过滤。