Сила systemd для проверки состояния службы через n секунд

У меня есть системный сервис (для heka), который вызывает у меня некоторые головные боли.

Проблема в том, что «start» возвращается успешно, даже если демон heka умирает вскоре после запуска. Это происходит, если файлы конфигурации неверны, например: процесс запустится, он проверит конфигурацию и умрет, если он не удовлетворен тем, что он находит. В этом случае система успешно возвращается.

Есть ли способ заставить systemd проверить статус программы после ее инициализации? Может быть, спать через несколько секунд после начала процесса?

Это сценарий:

[Unit] Description=Heka event/metric/log collection and routing daemon After=network.target auditd.service ConditionPathExists=!/etc/heka/hekad_not_to_be_run [Service] EnvironmentFile=-/etc/default/heka Type=simple PIDFile=/var/run/hekad.pid ExecStart=/usr/bin/hekad -config=/etc/heka ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure StandardError=inherit [Install] WantedBy=multi-user.target Alias=heka.service 

3 Solutions collect form web for “Сила systemd для проверки состояния службы через n секунд”

Вы можете объединить несколько команд ExecPostStart. И вы можете запускать их, даже если основной ExecStart не удалось, добавив – / ( systemd.service: Type = ). Что-то вроде этого:

 ExecStart=-/usr/bin/hekad -config=/etc/heka ExecStartPost=/bin/sleep 3 ExecStartPost=/bin/kill -0 $MAINPID &>/dev/null 

Это гарантирует, что вы все еще используете MAINPID при остановке или перезапуске службы, например.

Если есть простой способ проверить, hekad ли hekad я бы запустил демона, используя ExecStartPre=/usr/bin/hekad -config=/etc/heka а с ExecStart запустил небольшой скрипт, в котором есть цикл, в котором первый сон X секунд, а затем проверяет, продолжает ли демон hekad. Разрыв цикла, только если hekad кажется, остановился.

Вы должны использовать ExecStartPost для запуска команды или скрипта, который спит, а затем запускает проверку. Если это выходит за пределы нуля, устройство считается сбоем.

См. https://www.freedesktop.org/software/systemd/man/systemd.service.html.

  • Создайте точку беспроводного доступа и обменивайтесь интернет-соединением с помощью nmcli
  • systemd mount 'rootfs' в соответствии с '/ proc / cmdline'
  • Почему rsyslog не указан при запуске службы?
  • Что такое имя / подразделение systemd для установки записей fstab
  • Ограничьте / proc / mounts, чтобы избежать воздействия / run / user /
  • Два сетевых интерфейса, пытающихся получить IP через DHCP
  • Интеграция `afuse` с` sshfs` как (systemd?) User-daemon, порожденная логином или первой оболочкой
  • служба systemd-path не работает
  • Зависимость не удалась для монтирования после dist-upgrade
  • Проблема сценария службы Yocto linux
  • Для пользователя udev и systemd интеграции с X?
  • Почему systemd-nspawn не подходит для производственных развертываний?
  • Linux и Unix - лучшая ОС в мире.