如何从 df 输出中过滤只读文件系统?

Ste*_*ler 3 disk-usage readonly snap

我用来df检查我安装的文件系统是否接近满。我有一个 cron 作业,如果其中任何一个的使用率超过 90%,它就会向我发送电子邮件。

问题是一些应用程序(Ubuntu 发行版)现在使用 snap 来安装,它会创建一个专门为该应用程序安装的只读文件系统。正如 所报告的,它们始终是 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
Run Code Online (Sandbox Code Playgroud)

这是我的由 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
Run Code Online (Sandbox Code Playgroud)

我想删除所有这些完整的快照条目以及将来可能以只读方式安装的任何其他文件系统。

mwf*_*ley 5

是的,snap 对文件系统列表的入侵可能会很烦人......

你是对的df -x- 正如Snapcraft所说,所有快照都使用只读 Squashfs 文件系统,因此你可以使用以下方法将它们全部过滤掉:

df -xsquashfs
Run Code Online (Sandbox Code Playgroud)