LINUX.ORG.RU

Скрипт на Bash для расчёта объёма файла

 , ,


0

2

Всем привет.

Написал небольшой скрипт для создания файлов и записи в них соответствующих данных.

в файл snapshot-memory-disk.$ts.txt записывается объём файла в файл snapshot-alert.txt должно записываться значение «0» либо «1», чтобы отдавать это заббиксу, когда объём превышает заданный в переменной maxsize.

Проблема в том, что он работает не корректно и во все файлы пишет «0» или «1», объём в указанный файл не пишет :( .

Помогите пожалуйста (@_@) .

#!/bin/bash

file="/srv/snapshotbig/kvm"; # Путь к snapshot файлу
maxsize="10";
ts=$(date +%d.%m.%Y);
txtname=/srv/snapshotbig/snapshot-memory-disk.$ts.txt
zabbixalert=/srv/snapshotbig/snapshot-alert.txt

if [ -f $file/*.txt ]; #Имя файла. Тут можно задать маску для поиска файлов

then

cd $file
stat -c %s *.txt  >> $txtname;
ptr= head -n 1 $txtname;

else

echo "0" > $txtname;

fi


if [ $ptr >= $maxsize ];

then

echo "1" > $zabbixalert;

else

echo "0" > $zabbixalert;

fi


#if  [ $memory >= $disk ];

#then

#echo "1" > $zabbixalert

#else

#echo "0" > $zabbixalert

#fi

Ответ на: комментарий от Spoofing

По минимуму

10 рублей ? Прям не тысяч? :D

Задача такая: Нужно написать скрипт, чтобы он считывал объём файла snapshot'а KVM и отображал это на графике. Еще при создании snapshot, если недостаточно места на диске и он не создаётся полностью - должен приходить алерт.

Dr_Behaviour
() автор топика
Ответ на: По минимуму от Dr_Behaviour
#!/bin/bash

file=/srv/snapshotbig/kvm/*.txt
maxsize=10

if [ `stat -c %s $file` -lt $maxsize ]; then
	echo 0 > /srv/snapshotbig/snapshot-alert.txt
else
	echo 1 > /srv/snapshotbig/snapshot-alert.txt
fi

твой же скрипт, переписанный. не знаю как у тебя там шо устроено.

ps. на счет 10 рублей это шутка.

Spoofing ★★★★★
()
Ответ на: комментарий от Deleted

Кристина, а вы умеете собирать gcc?

anonymous
()
Ответ на: комментарий от Spoofing

Да я уже разобрался,

проблема была в

ptr= head -n 1 $txtname;
так надо
ptr=${head -n 1 $txtname};

и в

if [ $ptr >= $maxsize ];
так надо
if [ $ptr -ge $maxsize ];

Dr_Behaviour
() автор топика
Ответ на: комментарий от Spoofing

Спасибо, но Ваш вариант не подходит из-за того, что если файлов будет 0 или больше одного. То будут проблемы.

Dr_Behaviour
() автор топика

извините, тему не очень читал, но по-моему, чтобы получить объем файла, нужно массу файла разделить на его плотность.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.