Даже если вы аккуратно пишете конфиги и юниты systemd, сбои всё равно случаются сеть, диск, кривой деплой. В такой момент хочется, чтобы хотя бы базовые сервисы умели вставать на ноги.
С этим поможет скрипт на Python:
import subprocess
SERVICE_NAME = "nginx"
def restart_service():
try:
status = subprocess.run(
["systemctl", "is-active", SERVICE_NAME],
capture_output=True,
text=True,
)
if "inactive" in status.stdout or "failed" in status.stdout:
print(f"{SERVICE_NAME} is down! Restarting...")
subprocess.run(["systemctl", "restart", SERVICE_NAME], check=True)
print(f"{SERVICE_NAME} restarted successfully.")
else:
print(f"{SERVICE_NAME} is running fine.")
except Exception as e:
print(f"Error checking service: {e}")
if __name__ == "__main__":
restart_service()
systemctl is-active возвращает состояние сервиса, по которому вы определяете, нужно ли его перезапускать.При падении юнита скрипт выполняет
systemctl restart nginx и сообщает в stdout об успешном запуске.Как использовать на сервере
• Положите скрипт, например, в
/usr/local/bin/check-nginx.py и сделайте его исполняемым.• Добавьте cron‑задание
* * * * * /usr/bin/python3 /usr/local/bin/check-nginx.py чтобы проверять сервис каждую минуту.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt