Создать скрипт для проверки размера каталога

У меня проблема с моей малиной, у моей SD-карты всего 16 гб, поэтому через некоторое время журнал внутри / var / log использует все пространство на sd, и я не могу ничего сделать с моей малиной, поэтому я пытаюсь каждый день создавайте скрипт для проверки / var / log размер каталога и отправляйте мне почту с этими данными, поэтому я могу удалить некоторые журналы, когда используемое пространство слишком много, но у меня есть некоторые проблемы с командой du -h / var / log beacause скрипт не выполняет его, кто-нибудь может мне помочь?

это scritp

#!/bin/bash folder=/var/log folder_size="du -h /var/log" maxsize=10000000 emailAddr="mymail@gmail.com" 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 

мой os – распуан

  • Как конвертировать дату с «Oct 01 20:00» в формат «1 октября 20:00» (пробел)?
  • Сценарий, чтобы сравнить дату работы с сегодняшней датой и выводить только сегодняшние неудачи
  • Как сжать команду chmod UNIX
  • Nautilus-script для перемещения файла в один и тот же каталог имен
  • Получать текстовый вывод из команд сценария оболочки на экране во время выполнения
  • Форматирование даты в bash
  • Необходимо скопировать файлы в существующий каталог и удалить файлы, которые уже существуют с тем же именем, но с другим расширением
  • Как я могу передать $ 1 в sed?
  • 2 Solutions collect form web for “Создать скрипт для проверки размера каталога”

    du -h /var/log (вам нужно использовать backticks, или $ (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) 

    Я понимаю, что вы просите о помощи со сценарием. Могу ли я предложить альтернативу, использующую Logrotate для просмотра журнала (журналов) и поворота их по размеру и количеству оборотных журналов, которые вы храните?

    Что-то вроде этого:

     /tmp/output.log { size 100M copytruncate create 700 root utmp rotate 4 compress } 
    Linux и Unix - лучшая ОС в мире.