解析 `/dev/disk/by-uuid/xxx` 的 `df` 输出

解析 `/dev/disk/by-uuid/xxx` 的 `df` 输出

我想问你为什么这个命令有效

df -P /dev/sda1 | grep /dev/sda1 | awk '{ print $5}' | sed 's/%//g'

但不是这个吗?

df -P /dev/disk/by-uuid/0E5E17800E5E1780 | grep /dev/disk/by-uuid/0E5E17800E5E1780 | awk '{ print $5}' | sed 's/%//g'

有什么东西需要改变或者无法与 uuid 一起使用?

这是我的完整脚本

#!/bin/bash
inputa=90 
#outputa=$(df -P /dev/sda1 | grep /dev/sda1 | awk '{ print $5}' | sed 's/%//g')
outputa=$(df -P /dev/disk/by-uuid/0E5E17800E5E1780 | grep /dev/disk/by-uuid/0E5E17800E5E1780 | awk '{ print $5}' | sed 's/%//g') 

if  [ "$inputa -lt $outputa" ]
then 
     find /home/user/Documents/ipcams/ipcam2 -type f -name "*.mp4" -mtime +25 -exec rm {} \;
    (date +"%Y-%m-%d Heure:  %H-%M-%S") >> /home/user/ipcam.log
      echo Pourcentage $outputa "%" >> /home/user/ipcam.log

else echo rien

fi

祝你有美好的一天

谢谢

答案1

问题是,虽然df显示了有关 UUID 指定的设备的信息,但其输出的第一列仍然通过/dev/sdXY块设备名称引用它 - 因此grep匹配失败。

事实上,grep根本就没有必要使用 - 您可以用它awk来跳过标题行(甚至删除符号%):

$ df -P /dev/sda1 | awk 'NR == 2 { print substr($5,1,length($5)-1) }'
80

$ df -P /dev/disk/by-uuid/79b5546e-5b3e-4299-becb-5f0cad06cf5f | awk 'NR == 2 { print substr($5,1,length($5)-1) }'
80

答案2

/dev/disk/by-uuid/0E5E17800E5E178是指向设备的链接,该设备可能包含也可能不包含文件系统。df仅适用于文件系统,不适用于原始设备。来自man df

df displays the amount of disk space available on the file system containing each file name argument.

相关内容