예약된 작업을 만들어야 합니다. 매일 하드 디스크의 여유 공간을 확인하고 이 조건이 확인되면 파일을 삭제합니다. available < 1Go.
다음은 내가 작성한 스크립트이지만 작동하지 않는 것 같습니다.
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
아직 crontab 부분을 수행하지 않았습니다.
답변1
df
출력을 구문 분석하지 않는 것이 좋습니다 .
GNU coreutils를 사용하는 경우 다음 stat
을 통해 루트가 아닌 사용자가 사용할 수 있는 사용 가능한 블록 수를 얻을 수 있습니다.
stat -f /mountpoint -c '%a'
블록 크기는
stat -f /mountpoint -c '%S'
그리고 조건은 다음과 같이 간결하게 작성할 수 있습니다.
[ `stat -f /mountpoint -c '%a'` -lt 262144 ] && do_your_stuff
(블록 크기를 4096으로 가정하면 1GB는 1073741824바이트, 즉 1073741824/4096입니다)
(질문에 따르면 파일) 삭제와 관련하여 가장 안전한 방법은 아마도 다음과 같습니다.
find /directory -type f -print0 | xargs -0 -r rm -f
또는 더 나은 방법은 다음과 같습니다.
find /directory -type f -delete
그것을 사용하는 것은 rm -f /something/*
단지 문제를 요구하는 것입니다.
답변2
아래 코드를 시도해 보세요.
#!/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
답변3
귀하의 의견에 감사드립니다.
이 솔루션은 저에게 효과적입니다.
var=$(df -h | sed -n 2p | awk '{print $4}')
vari = $(echo "${var::-1}")
if [ $vari < 15 ];
그 다음에
./bin/dss 중지
rm -rf tmp/*
rm -rf 캐시/*
./bin/dss 시작;
필리핀 제도