#bash #service
#bash #Обслуживание
Вопрос:
Я пытаюсь написать скрипт bash, который определяет, изменила ли служба состояние. У меня пока есть это:
while true; do
if [ -z "$(netstat -tulpn | grep 51827)" ];
then
echo notinuse
else
echo inuse
fi
sleep 5
done
Он работает, но он будет бесконечно записывать, когда служба работает или не работает, и я хочу, чтобы он сообщал только о первом экземпляре изменения состояния. Итак, сообщайте, когда служба была отключена, а затем запущена, а также когда она была запущена, а затем отключилась.
Я начал создавать счетчики циклов и сравнивать с предыдущим запуском, но попал в полный беспорядок переменных. Кто-нибудь может помочь?
Ответ №1:
if [ -z "$(netstat -tulpn | grep 51827)" ];
then
echo notinuse
notify_status="notinuse-sent"
else
echo inuse
notify_status="inuse-sent"
fi
while true; do
if [ -z "$(netstat -tulpn | grep 51827)" ];
then
if [ $notify_status = "notinuse-sent" ]; then
echo "already notified"
else
echo notinuse
$notify_status="notinuse-sent"
fi
else
if [ $notify_status = "inuse-sent" ]; then
echo "already notified"
else
echo inuse
$notify_status="inuse-sent"
fi
fi
sleep 5
done
Комментарии:
1. Спасибо за это. В итоге я нарисовал логику на какой-то бумаге, и это значительно упростило работу с необходимыми параметрами. Удалось заставить его работать именно так, как я хотел, с помощью нескольких настроек вашего кода выше.