Автоматический мониторинг и рестарт сервисов в Bash

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashмониторингsystemctl

👁 В больших проектах с множеством сервисов важно, чтобы при сбое какого-либо сервиса, он автоматически перезапускался без участия администратора. Bash позволяет эффективно управлять процессами, контролировать их состояние и запускать их повторно при сбоях.

📝 Пример автоматического перезапуска сервиса в случае его завершения:

#!/bin/bash

SERVICE="my_service"
LOGFILE="/var/log/my_service.log"

# Функция для проверки, работает ли сервис
check_service() {
    if pgrep -x "$SERVICE" > /dev/null
    then
        echo "$SERVICE is running."
    else
        echo "$SERVICE is not running. Restarting..."
        restart_service
    fi
}

# Функция для перезапуска сервиса
restart_service() {
    systemctl start $SERVICE
    echo "$(date): Restarted $SERVICE" >> $LOGFILE
}

# Основной цикл мониторинга
while true
do
    check_service
    sleep 60  # Проверяем каждую минуту
done

📌 Как это работает:

  • Скрипт проверяет, запущен ли сервис, с помощью команды pgrep. Если сервис не найден, выполняется его перезапуск через systemctl.
  • Перезапуск сопровождается логированием в файл с указанием времени перезапуска.
  • Цикл мониторинга выполняется в фоне с использованием бесконечного цикла, проверяя состояние сервиса каждую минуту.

❗️ Этот подход полезен для автоматического восстановления сервисов и процессов без вмешательства человека, что значительно повышает надежность системы. Такой скрипт можно интегрировать в систему управления инфраструктурой для поддержания стабильности сервисов.

tags: #bash #мониторинг #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот примера Bash-скрипта для мониторинга и перезапуска сервиса: функции check_service, restart_service, переменные SERVICE и LOGFILE и цикл.
Скриншот кода: простой Bash-скрипт для проверки и автоматического перезапуска сервиса.

Читайте так же