TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #457 1.09K
Проверка доступности сервисов с автоперезапуском

Иногда нужен не Zabbix, а простейший контроль жив или нет. Для HTTP-сервисов это легко решается связкой curl + systemctl.

▪️ Базовая проверка доступности


curl -sf http://127.0.0.1:8080/health || echo "DOWN"


-s - тихо
-f - ошибка, если HTTP ≠ 2xx
exit-код ≠ 0 - сервис недоступен

▪️ Автоперезапуск сервиса


SERVICE=myapp
URL=http://127.0.0.1:8080/health

if ! curl -sf --max-time 3 "$URL"; then
logger "watchdog: $SERVICE is down, restarting"
systemctl restart "$SERVICE"
fi


--max-time защищает от зависших запросов
logger пишет в syslog (удобно для аудита)

▪️ Защита от флаппинга (несколько неудач подряд)


FAILS=/run/myapp.watchdog.fail
MAX=3

if ! curl -sf "$URL"; then
n=$(($(cat "$FAILS" 2>/dev/null || echo 0)+1))
echo "$n" > "$FAILS"
[[ $n -ge $MAX ]] && systemctl restart "$SERVICE"
else
rm -f "$FAILS"
fi


Рестарт только если сервис падает несколько раз подряд.

▪️ Запуск по cron


*/1 * * * * /usr/local/bin/watchdog.sh


BashTex 📱 #bash #utils
  • 👍 7
More from @bash_tex
  1. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  2. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  3. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  4. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  5. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  6. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →