我想问你为什么这个命令有效
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.