Разобрать вывод `df` для` / dev / disk / by-uuid / xxx`

Я хотел бы спросить вас, почему эта команда работает

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

Хорошего дня

Благодаря

0
задан 30 May 2019 в 16:05

2 ответа

Проблема в том, что, хотя df показывает информацию об устройстве, указанном UUID, первый столбец его вывода по-прежнему ссылается на него по имени блочного устройства /dev/sdXY, поэтому grep не может соответствовать. 117]

Фактически, вообще не нужно использовать 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
0
ответ дан 30 May 2019 в 16:05

/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.
0
ответ дан 30 May 2019 в 16:05

Другие вопросы по тегам:

Похожие вопросы: