Raspberry Pi에서 Raspbian을 실행하는 데 문제가 있습니다. 내 SD 카드에는 16GB의 공간만 있으므로 잠시 후 내부 로그가 /var/log
SD의 모든 공간을 사용합니다. 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
}