디렉터리 크기를 확인하는 스크립트 만들기

디렉터리 크기를 확인하는 스크립트 만들기

Raspberry Pi에서 Raspbian을 실행하는 데 문제가 있습니다. 내 SD 카드에는 16GB의 공간만 있으므로 잠시 후 내부 로그가 /var/logSD의 모든 공간을 사용합니다. Raspberry Pi로는 거의 아무것도 할 수 없기 때문에 /var/log매일 디렉터리 크기를 확인하고 해당 데이터가 포함된 이메일을 보내 너무 많은 공간을 사용하는 경우 일부 로그를 삭제할 수 있는 스크립트를 만들어 보았습니다. du -h /var/log내 스크립트가 실행되지 않아서 문제가 있습니다 .

이것이 스크립트입니다.

#!/bin/bash
folder=/var/log
folder_size="du -h /var/log"
maxsize=10000000
emailAddr="[email protected]"
while true; do
  if [ $folder_size -ge $maxsize ]; then
    echo size is over $maxsize kilobytes
    subject="DIMENSIONE DELLA CARTELLA $folder HA SUPERATO IL LIMITE!"
    echo "La dimensione della cartella $folder ha superato il limite di $maxsize" | mail -s "$subject" $emailAddr
    exit
  else
    echo size is under $maxsize kilobytes
    
    subject="dimensione della cartella $folder"
    echo "La dimensione della cartella $folder è di $folder_size - $maxsize" | mail -s "$subject" $emailAddr 
  fi
  sleep 86400 # in seconds = 1 day
done

답변1

du -h /var/log(큰따옴표가 아닌 백틱 또는 $(xxx)를 사용해야 합니다.) 다음 출력이 반환됩니다. 하지만 당신은 단지 크기를 결정하고 싶을 뿐입니다.

# du -h /var/log
2.6M    /var/log/httpd
4.0K    /var/log/ntpstats
14M     /var/log/sa
4.0K    /var/log/mail
26M     /var/log/audit
46M     /var/log
#

그리고 실행하면 du -s /var/log다음과 같은 출력이 표시됩니다.

# du -s /var/log
46256   /var/log
#

그래서 컷을 파이핑하면 아래와 같이 숫자요소를 추출할 수 있습니다.

# du -s /var/log | cut -f1
46256
#

이는 스크립트의 행을 다음으로 변경해야 함을 의미합니다.

folder_size="du -h /var/log"

도착하다

folder_size=`du -s /var/log | cut -f1`

또는 더 이상 사용되지 않는 구문을 사용하세요.

folder_size=$(du -s /var/log | cut -f1)

답변2

나는 당신이 스크립트에 대한 도움을 찾고 있다는 것을 알고 있습니다. Logrotate를 사용하여 로그를 관찰하고 보관 중인 회전 로그의 크기와 수에 따라 회전하는 것을 제안해도 될까요?

이 같은:

/tmp/output.log {
    size 100M
    copytruncate
    create 700 root utmp
    rotate 4
    compress
}

관련 정보