首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从df输出中筛选只读文件系统?

如何从df输出中筛选只读文件系统?
EN

Unix & Linux用户
提问于 2018-11-01 10:56:55
回答 2查看 4.2K关注 0票数 3

我使用df检查我安装的任何文件系统是否接近满。我有一份cron的工作,如果他们中的任何一个都超过90%,我就会发电子邮件给我。

问题是,一些应用程序(Ubuntu发行版)现在是使用snap安装的,它创建了一个专门为该应用程序挂载的只读文件系统。正如df所报告的那样,它们总是100%满的。我想这是适当的,因为他们是只读的,不能得到更充分的。我想将它们排除在df输出之外。

df有一个-x, --exclude-type=TYPE命令行标志,看起来很有用,但是手册页没有记录TYPE的可能值,所以我不确定是否可以使用它排除只读文件系统。

下面是我的一个系统上的df输出示例:

代码语言:javascript
复制
$ 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运行的脚本:

代码语言:javascript
复制
#!/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

我想删除所有这些完整的快照条目和任何其他文件系统,可能被挂载在未来只读。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-11-01 11:11:22

df中使用的文件系统类型引用文件系统的格式,如ext4

您可以通过过滤/proc/mounts (或mount的输出)为rw找到读写文件系统,然后使用这些来过滤df的输出。

您不能使用来自rw的所有/proc/mounts条目,因为它还包含您不希望在列表中出现的/proc之类的条目。

<#>编辑

代码语言:javascript
复制
#!/bin/bash
df --output=pcent,target | grep -f <(awk '$4 ~ /^rw.*/ { print $2"$" }' /proc/mounts)
票数 2
EN

Unix & Linux用户

发布于 2018-11-01 11:20:28

据我所知,df不知道挂载选项,因为有挂载命令。它可以用来获取设备列表,并将它们作为参数传递给df。如下所示:

df --output=pcent,target $(mount -t ext4 | grep rw | cut -d" " -f1)

它通过文件系统ext4进行筛选,然后对那些具有挂载选项rw的用户进行筛选,清理用于df的输出,然后将设备列表传递给df。您可以在mount中使用$(...)命令,以便正确地进行筛选。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/479102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档