Скрипт проверки свободного дискового пространства в Linux с отправкой на e-mail

Представляю скрипт на bash для вычисления свободного места на жестком диске сервера Linux. В случае если свободное пространство подходит к концу - мы получаем уведомление на почту.

#!/bin/bash
# Задаем переменную, где вычисляем свободное место на диске /dev/vda2 (в мегабайтах)
freespace=`df -m | grep "/dev/vda2" | awk '{print $4}'`
# Если сободного места меньше 20000 Mb, то отправляем письмо на e-mail.
if [ $freespace -lt 20000 ];
then
echo "Warning!!! On the Server running out of space on your hard drive. Freespace - "$freespace"Mb" | mail -s "FreeSpase on the Server" user@site.ru
fi

Второй вариант скрипта, где задается определенный лимит на папку с бэкапами, при достижении которого, удаляются самые старые бэкапы:

#!/bin/bash
# Задаем переменную, в которой вычисляем размер папки с бекапом
spacebackup=`du -sm /home/data/backup/ | awk '{print$1}'`

# Если папка с бекапом занимает больше 22000 Мб
if [ $spacebackup -gt 22000 ];
   then
    cd /home/data/backup/
# То до тех пор пока размер папки с бэкапами будет больше 22000 Мб
        while [ `du -sm /home/data/backup/ | awk '{print$1}'` -gt "22000" ]
             do
# Будем в папке с бэкапами удалять все файлы с расширением "tar.gz", начиная с самых старых
              find /home/data/backup/ -name "*.tar.gz" -and -type f | sort -r | tail -n1 | xargs -i rm '{}'
                 done
                   echo "Нет подходящих файлов для удаления"
# Если папка с бэкапами не превышает 22000 Мб, то выдаст сообщение
                        else
                         echo "Удаление файлов не требуется"
                            fi

Shell-скрипт с условием проверки наличия файла для Linux/FreeBSD

Представлю вам скрипт, который архивирует файл, если он есть в заданной директории. Если файла нет - архив не создается.

#!/bin/sh
#Задаем переменную директории
DIR=/home/user/data
#Если в директории имеются файл. Ключ -f проверяет наличие файлов.
if [ -f $DIR/1.txt ];
# архивируем этот файл
then
cd $DIR
tar -cpf archive.tar 1.txt
#если файлов нет - выдается сообщение
else
echo “Нет файла”
fi

Остальные ключи проверки файлов/каталогов:

-f        проверка существования файла
-s       проверка, является ли файл пустым
-x       проверка исполняемости файла
-d       проверка существования каталога

Второй вариант bash-скрипта для проверки условия существования файлов и их архивирования при наличии:

#!/bin/sh
if A=$(find . -name "*.txt" -exec echo -n "1" \; ); [ "$A" = "" ]
then
echo “Нет файлов”
else
tar -cpf archive.tar *.txt
fi

Третий вариант проверки условия существования любых файлов в каталоге:

#!/bin/sh 

#Задаем переменную директории
DIR=/000/test/test

#вычисляем количество файлов, которые есть в заданной директории
filecount=`find $DIR -type f | wc -l`

#если количество файлов равно нулю, то есть их нет, то выдается сообщение
if [ $filecount -eq 0 ];
then
echo "Файлов нет, выполняем скрипт дальше"
else
echo "Есть файлы, прекращаем работу скрипта" && exit
fi

Четвертый вариант проверки условия существования любых файлов в каталоге с бесконечным циклом:

#!/bin/sh
#Задаем переменную директории
DIR=/000/test/test 

while true
do
case `find $DIR -type f | wc -l` in
0 ) echo "no file" ;; #Если файлов нет - выводится сообщение (или можно подставить любой ваш скрипт или команду)
* ) sleep 5 ;; #если файлы в каталоге есть - ждем 5 секунд и дальше проверяем по-новому (к первому шагу)
esac
done
exit 0