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
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.
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.
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
Tags cron disk-usage rm linux scripting