하드디스크의 여유공간을 매일 확인하고 1GO 미만일 경우 파일을 삭제하는 방법

하드디스크의 여유공간을 매일 확인하고 1GO 미만일 경우 파일을 삭제하는 방법

예약된 작업을 만들어야 합니다. 매일 하드 디스크의 여유 공간을 확인하고 이 조건이 확인되면 파일을 삭제합니다. 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 시작;

필리핀 제도

관련 정보