LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

пытаюсь. отягощается тем, что пересиливать нужно, если знаешь как. а то получается приложение сил - но выходит как у меня - с кучей временных файлов.

Мониторинг же у вас будет в цикле, потому не надо запоминать старое значение во временном файле. Впрочем, если хотите, по получению сигналов SIGTERM/SIGINT/etc можно и записывать. Это будет хороший пилотаж.

ResPF у вас лишняя переменная, правильнее как-то так:

#!/bin/bash

##Old data of Received
BYTES_R=
read BYTES_R 2> /dev/null < /tmp/postfix/postfix.bytes.received
BYTES_R=${BYTES_R:-0}

# включаем запоминание во временный файл при сигнале
trap 'echo $BYTES_R > /tmp/postfix/postfix.bytes.received; exit 1' SIGHUP SIGINT SIGQUIT SIGTERM

while true; do
 ##Get new values 
 BYTES_RN=$(/usr/sbin/pflogsumm -h 0 -u 0 -d today --bounce_detail=0 --deferral_detail=0 --reject_detail=0 --smtpd_warning_detail=0 --no_no_msg_size /var/log/mail.log | awk 'BEGIN {sum=0} /bytes received/  {sum+=$1} END {print sum}')
 ##получаем abs(разницы)
 BYTES_R=$((BYTES_RN - BYTES_R < 0 ? BYTES_R - BYTES_RN : BYTES_RN - BYTES_R)) 
 # что-то делаем ещё
 ......
done

Исправление vodz, :

пытаюсь. отягощается тем, что пересиливать нужно, если знаешь как. а то получается приложение сил - но выходит как у меня - с кучей временных файлов.

Мониторинг же у вас будет в цикле, потому не надо запоминать старое значение во временном файле. Впрочем, если хотите, по получению сигналов SIGTERM/SIGINT/etc можно и записывать. Это будет хороший пилотаж.

ResPF у вас лишняя переменная, правильнее как-то так:

#!/bin/bash

##Old data of Received
BYTES_R=$(cat /tmp/postfix/postfix.bytes.received 2> /dev/null || echo 0)

# включаем запоминание во временный файл при сигнале
trap 'echo $BYTES_R > /tmp/postfix/postfix.bytes.received; exit 1' SIGHUP SIGINT SIGQUIT SIGTERM

while true; do
 ##Get new values 
 BYTES_RN=$(/usr/sbin/pflogsumm -h 0 -u 0 -d today --bounce_detail=0 --deferral_detail=0 --reject_detail=0 --smtpd_warning_detail=0 --no_no_msg_size /var/log/mail.log | awk 'BEGIN {sum=0} /bytes received/  {sum+=$1} END {print sum}')
 ##получаем abs(разницы)
 BYTES_R=$((BYTES_RN - BYTES_R < 0 ? BYTES_R - BYTES_RN : BYTES_RN - BYTES_R)) 
 # что-то делаем ещё
 ......
done

Исходная версия vodz, :

пытаюсь. отягощается тем, что пересиливать нужно, если знаешь как. а то получается приложение сил - но выходит как у меня - с кучей временных файлов.

Мониторинг же у вас будет в цикле, потому не надо запоминать старое значение во временном файле. Впрочем, если хотите, по получению сигналов SIGTERM/SIGINT/etc можно и записывать. Это будет хороший пилотаж.

ResPF у вас лишняя переменная, правильнее как-то так:

#!/bin/bash

##Old data of Received
BYTES_R=$(cat /tmp/postfix/postfix.bytes.received 2> /dev/null || echo 0)

# включаем запоминание во временный файл при сигнале
trap 'echo $BYTES_R > /tmp/postfix/postfix.bytes.received; exit 1' SIGHUP SIGINT SIGQUIT SIGTERM

while true; do
 ##Get new values 
 BYTES_RN=$(/usr/sbin/pflogsumm -h 0 -u 0 -d today --bounce_detail=0 --deferral_detail=0 --reject_detail=0 --smtpd_warning_detail=0 --no_no_msg_size /var/log/mail.log | awk 'BEGIN {sum=0} /bytes received/  {sum+=$1} END {print sum})
 ##получаем abs(разницы)
 BYTES_R=$((BYTES_RN - BYTES_R < 0 ? BYTES_R - BYTES_RN : BYTES_RN - BYTES_R)) 
 # что-то делаем ещё
 ......
done