在新安装点的情况下如何从 df 命令跟踪视图

在新安装点的情况下如何从 df 命令跟踪视图

我的目标是一致地验证是否添加了一些新的安装点,我需要通过 df 命令来验证这一点

因此,以下命令实际上查看 df ,如果有新的安装点,我们可以看到变化

 watchdf

但我问我们是否可以通过 bash 脚本跟踪 df 信息,该脚本将打印“添加了新挂载点”,如果新挂载点出现在 df 中是否可能?

答案1

观察 的输出df是一个坏主意,因为它的输出无法可靠地处理,并且它不包括所有已安装的文件系统(除非您使用-aGNU 或 busybox 实现的选项)。

在 Linux(util-linux2.20 及更高版本)上,您可以用于findmnt -p轮询挂载点上的更改。

poll(events=POLLPRI)该命令的工作原理是在文件描述符上执行只读打开操作,/proc/self/mountinfo以便在事件发生时立即报告事件(安装、卸载)。但它不会检测到正在重命名的挂载点。

请注意,它仅检测当前挂载命名空间中的更改(就像观看df一样)。

答案2

您可以使用这样的脚本:

x=""
while :; do
  df="$(awk '{print $1,$2}' /proc/mounts)" # only the first two fields are relevant
  if [ "$x" != "$df" ]; then # only diff the contents when something has changed
    diff <(echo "$df") <(echo "$x") \ # compare the two values
      --unchanged-line-format='' \
      --old-line-format='mounted: %L' \
      --new-line-format='unmounted: %L'
  fi
  x="$df"
  sleep 1 # can be increased
done

根据中的信息/proc/mounts,脚本每 1 秒循环一次并检查是否有更改。diff比较旧值和新值并格式化输出。


例如,当脚本运行时,输出将如下所示:

mounted: //srv/share /mountpoint
unmounted: /dev/sdb1 /media

相关内容