TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #4356 1.23K
😊 Как сервисы общаются с systemd

systemd умеет не только запускать и перезапускать сервисы, но и разговаривать с ними. Механизм notify — это способ для демона сказать: «я реально готов», «я перезагружаю конфиг», «я живой, не убивай меня».

Зачем вообще нужен notify

Классический юнит Type=simple врёт сам себе: как только процесс стартанул — считаем сервис запущенным. А в реальности БД ещё поднимает файлы, веб‑сервер открывает сокеты, а ваш сервис в этот момент не готов обслуживать запросы.

Type=notify + systemd-notify решают эту проблему: systemd ждёт явного сигнала READY=1, и только после этого считает сервис активным и запускает зависящие юниты.

Как это устроено под капотом

• При старте юнита с Type=notify systemd прокидывает в окружение переменную NOTIFY_SOCKET — путь до UNIX‑сокета, куда сервис должен отправлять уведомления.

• Сам сервис либо вызывает sd_notify() из libsystemd, либо запускает утилиту systemd-notify, чтобы отправить строки вида READY=1, STATUS=…, RELOADING=1, STOPPING=1, WATCHDOG=1.

systemd-notify — это просто тонкая обёртка над sd_notify(), которая делает этот протокол доступным из shell‑скриптов и простых сервисов без прямой линковки с libsystemd. Она умеет:

• отправлять --ready, --reloading, --stopping, --status="...", --pid=...

• работать в режиме --exec: сначала отправить уведомление, потом exec процесса; или --fork: подождать READY=1 от дочернего процесса и вернуть его PID.

Watchdog и «я живой»

Через этот же канал работает и watchdog. Если в юните настроен WatchdogSec=…, systemd ждёт периодических сообщений WATCHDOG=1. Пока они приходят — сервис считается здоровым, как только нет — менеджер перезапускает его.

Это даёт очень дешёвый health‑check без дополнительных скриптов и cron’ов: сервис сам регулярно подтверждает, что цикл событий жив и не завис.

🐸 Библиотека devops'a

#арсенал_инженера
  • 👍 6
More from @devopsslib
  1. Sep 25, 2026🤖 ИИ-агенту теперь можно поставить задачу прямо в GitLab — и не расписывать каждый следую…
  2. Sep 25, 2026✨ Как настроить PostgreSQL для продакшен-нагрузок При переходе к продакшен-нагрузкам важно…
  3. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026👩‍💻 Bash-скрипт для мониторинга сервисов Полноценный мониторинг вроде Zabbix или Prometh…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
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 →