@kavabangaungava

Как сделать проверку, что сообщение уже было отправленно?

Выполняю проверку того, какой процесс больше всего потребляет памяти, и результат хочу отправить на mail или xmpp сервер как в данном случае
if [[ $(ps aux | awk '{print $4}' | sort -nr | head -n 1 | sed 's/\..*//g' ) -ge 70 ]] ;\
 then ps aux | awk '$4>70' | sendxmpp -s 'Memory Load > 70%'  username@xmpp.server ; \
fi

Но если процесс грузит память постоянно, то и мессаджи будут отправляться нонстопом.

Подскажите как сделать проверку того, что сообщение уже было отправлено, если процесс еще загружает память?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
gedev
@gedev
сисадмин-энтузиаст
Для уведомлений можно создавать лок-файл (просто как флаг). Вот так должно работать (в примере речь о падении сервиса,но суть одна):

1. пошла первая итерация
- сервис упал
- проверка существавания лок-файла
- уведомление о падении ушло, так как лок-файл не существует
- лок-файл создан
2. пошла вторая итерация
- сервис ещё лежит
- проверка существования лок-файла
- лок-файл существует, поэтому уведомление повторно не шлём
3. пошла третяя итерация
- сервис поднялся
- проверка существования лок-файла
- шлём уведоление (или не шлём) о том, что сервис поднялся
- удаляем лок-файл
4. цикл продолжается
...

Лок-файл может быть любым файлом, я обычно создавал пустой файл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы