После выполнения установки rpm, которая также запускает службу homemade-auth-svc, кажется, что она запускается достаточно успешно, но затем терпит неудачу и постоянно перезагружается.
journalctl -ex u домашний-auth-svc.service:
Jan 14 21:01:51 UI systemd[1]: Starting A service for homemade authentication....
-- Subject: Unit homemade-auth-svc.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit homemade-auth-svc.service has begun starting up.
Jan 14 21:01:51 UI homemade-auth-svc[1709]: homemade-auth: starting...
Jan 14 21:01:51 UI systemd[1]: Started A service for homemade authentication..
-- Subject: Unit homemade-auth-svc.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit homemade-auth-svc.service has finished starting up.
--
-- The start-up result is done.
Jan 14 21:01:51 UI systemd[1]: homemade-auth-svc.service holdoff time over, scheduling restart.
Jan 14 21:01:51 UI systemd[1]: Stopping A service for homemade authentication....
-- Subject: Unit homemade-auth-svc.service has begun shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit homemade-auth-svc.service has begun shutting down.
Jan 14 21:01:51 UI systemd[1]: Starting A service for homemade authentication....
-- Subject: Unit homemade-auth-svc.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
....
systemctl status homemade-auth-svc:
homemade-auth-svc.service - A service for homemade authentication.
Loaded: loaded (/usr/lib/systemd/system/homemade-auth-svc.service; enabled)
Active: failed (Result: start-limit) since Thu 2016-01-14 21:01:52 PST; 20min ago
Process: 1725 ExecStart=/usr/bin/HomemadeAuthSvc (code=exited, status=0/SUCCESS)
Main PID: 1725 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/homemade-auth-svc.service
Jan 14 21:01:52 UI systemd[1]: homemade-auth-svc.service holdoff time over, scheduling restart.
Jan 14 21:01:52 UI systemd[1]: Stopping A service for homemade authentication....
Jan 14 21:01:52 UI systemd[1]: Starting A service for homemade authentication....
Jan 14 21:01:52 UI systemd[1]: homemade-auth-svc.service start request repeated too quickly, refusing to start.
Jan 14 21:01:52 UI systemd[1]: Failed to start A service for homemade authentication..
Jan 14 21:01:52 UI systemd[1]: Unit homemade-auth-svc.service entered failed state.
домашний-auth-svc.service:
[Unit]
Description=A service for homemade authentication.
After=network.target
[Service]
Type=notify
NotifyAccess=all
ExecStart=/usr/bin/HomemadeAuthSvc
StandardOutput=null
Restart=always
[Install]
WantedBy=multi-user.target
Alias=homemade-auth-svc.service
Мы вызываем sd_notify (0, «READY = 1»); в дочернем, процессе демона, но, похоже, не имеет значения, если мы вместо этого сделаем это в родительском процессе после ожидания 10 секунд, а затем успешного выхода. systemd просто ждет столько времени, прежде чем даст тот же результат. Это как если бы он ждал sd_notify (), объявлял об успешном завершении и немедленно перезапускал службу. Теперь rpm изменяет lightdm.service (службу входа в систему), чтобы она зависела от нас (устанавливает файл с содержимым:
[Unit]
Wants=homemade-auth-svc.service
в: /etc/systemd/system/lightdm.service.d/)
но поскольку lightdm уже запущен, я не думаю, что это должно быть проблемой.
Systemd - это версия 208, работающая на Fedora 20.
Согласно Майклу Хэмптону и некоторому полу-подтверждающему просмотру списка рассылки systemd-devel, похоже, что вы не можете использовать sd_notify (& Type = notify) с традиционными демонами fork () ed. Итак, я сделал службу старой доброй Type = forking и попросил дочернего элемента сообщить родителю через общий канал, когда дочерний элемент был готов, после чего родительский элемент завершает работу, что, в свою очередь, позволяет systemd узнать, что служба ГОТОВА.
FWIW, наша попытка остановить зависимую службу (менеджер входа в систему) на пару секунд не удалась, systemd ждал <1 секунды перед ее запуском.