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

У меня проблема с моей малиной, у моей 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 – распуан

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 } 
  • Как получить информацию о моих виртуальных рабочих столах через командную строку?
  • shebang и path
  • Как перечислить все выходные в течение следующих 6 месяцев?
  • Сохранение вывода команды в переменной оболочки
  • Datecalc эквивалент для Linux
  • Получить дату следующей субботы с определенной даты
  • Подождите, пока разветвленный процесс откроет окно
  • Сплит PDF в документы с несколькими страницами каждый
  • Может ли сервер Linux, который проходит проверку подлинности в Active Directory, принимает общедоступные / закрытые ключи для входа в систему без пароля?
  • Как обеспечить, чтобы исходящий трафик TCP / IP всегда использовал VPN, даже при использовании Wi-Fi?
  • Как я могу проверить, запущена ли программа из сценария
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.