Como verificar o espaço disponível no disco rígido todos os dias e se ele é inferior a 1GO remover arquivos

0

Eu preciso fazer uma tarefa planejada: Verifique o espaço disponível no disco rígido todos os dias e remova arquivos se essa condição for verificada: Available < 1Go.

Aqui está o script que escrevi, mas parece que não funciona:

var="df -h | sed -n 2p |awk '{ print $4 }' "
if[var<15];then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi

Eu não fiz a parte crontab ainda.

    
por Idriss Mghabbar 25.05.2018 / 11:01

3 respostas

0

experimente o código abaixo.

#!/bin/bash
var=$(df -h | sed -n 2p |awk '{ print $4 }')
if [ "${var}" le "15" ]
then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi
    
por 25.05.2018 / 11:14
1

Eu aconselho veementemente contra parsing df output.

Se você tem stat do GNU coreutils, você pode obter o número de blocos livres disponíveis para não raiz por

stat  -f /mountpoint -c '%a'

o tamanho do bloco por

stat -f /mountpoint -c '%S'

e a condição pode ser escrita sucintamente como:

[ 'stat  -f /mountpoint -c '%a'' -lt 262144 ] && do_your_stuff

(assumindo que o tamanho do bloco é 4096 e 1 GB é 1073741824 bytes - ou seja, 1073741824/4096)

E quanto à exclusão (arquivos, conforme a pergunta), provavelmente o caminho mais seguro seria:

find /directory -type f -print0 | xargs -0 -r rm -f

ou melhor:

find /directory -type f -delete

Usar rm -f /something/* está apenas pedindo problemas.

    
por 25.05.2018 / 11:13
0

Obrigado por suas contribuições.

Esta solução funcionou para mim.

var = $ (df -h | sed -n 2p | awk '{print $ 4}')

vari = $ (echo "$ {var :: - 1}")

se [$ vari < 15];

então

./ bin / dss stop

rm -rf tmp / *

rm -rf caches / *

./ bin / dss start;

fi

    
por 29.05.2018 / 11:18