Этот вопрос связан с: надежный сервис systemd для autossh
У меня есть служба, использующая type = simple. Вот документы systemd:
Type = simple (по умолчанию): systemd считает, что служба запускается немедленно. Процесс не должен развиваться. Не используйте этот тип, если для этого сервиса необходимо заказать другие услуги, если только он не активирован сокетом.
Представьте, что служба зацикливается или зависает.
Как systemd может узнать, в порядке ли служба?
Есть ли какой-нибудь, если МПК между systemd и сервисом возможно?
Что хочу: хочу systemctl status foo-service
чтобы сказать мне, в порядке ли услуга. Это отличается от «Linux-процесс службы все еще существует».
systemctl status
не предоставляет расширенной информации о запущенной службе.
Если вы ищете способы уведомить systemd об изменениях статуса вашего сервиса, sd_notify
может быть полезно. Однако это зависит от способности ваших служб к самодиагностике. Если ваш сервис использует sd_notify, you can configure the service with
WatchdogSec`. Цитировать из документация:
Настраивает тайм-аут сторожевого таймера для службы. Сторожевой таймер активируется после завершения запуска. Служба должна регулярно вызывать sd_notify (3) с «WATCHDOG = 1» (т. Е. «Keep-alive ping»). Если время между двумя такими вызовами больше, чем настроенное время, тогда служба переводится в состояние сбоя и будет прекращена с помощью SIGABRT.
Однако используя systemctl show
вы можете получить дополнительную машиночитаемую информацию о службе, которая может помочь вам решить, в порядке ли служба.
Если вы ищете systemd
чтобы узнать, работает ли ваша служба в бесконечном цикле, вам, скорее всего, не повезло. Эта проблема тесно связана с проблема остановки, для которого доказано, что общего алгоритма решения задачи не существует. Хотя ваша конкретная проблема может быть решена, скорее всего, это, по крайней мере, огромная трата ресурсов. Видеть этот связанный вопрос.