👁 В больших проектах с множеством сервисов важно, чтобы при сбое какого-либо сервиса, он автоматически перезапускался без участия администратора. 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 #мониторинг #полезно



