Программа нерабочая потому, что не успевает дождаться запуска сервера, как начинает проверять его работоспособность через pid-файл. После смены в start() строки usleep 100000 На usleep 1000000 Всё стало запускаться под systemd. Ошибка на запуск сервера ушла. Надо увеличивать время ожидания запуска сервера или что-то ещё делать. 0,1 с (и 0,5 с тоже) не хватает для гарантированного запуска сервера.
Проблема в том, что когда apachectl2 возвращает ошибку, systemd принудительно глушит все процессы, которые появляются в данной группе, даже если им надо работать.
Думаю реализовать вариант с циклическим опросом pid-файла. Достаточно ли будет 10-и раз, с интервалом 0.1 с?
(В ответ на комментарий №2) > Думаю реализовать вариант с циклическим опросом pid-файла. Достаточно ли > будет 10-и раз, с интервалом 0.1 с? Ну тогда хотя бы 10 раз по 0,5 с на случай одновременного запуска сервисов через systemd при старте машины. Не вижу смысла дробить секундный интервал опроса по 0,1 с. Я же написал, что у меня для запуска единичного сервиса даже полсекунды не хватает. Проще вставить секунду и не маяться.
apache2-2.2.22-alt10 -> sisyphus: * Thu Oct 18 2012 Aleksey Avdeev <solo@altlinux> 2.2.22-alt10 - Fix %apache2_sbindir/apachectl%apache2_branch start: use briefstatus loop in poststart (Closes: #27856) - Move requires %name-ab and %name-htpasswd to %name subpackage - Fix conflicts for %name-ab and %name-htpasswd subpackage
(В ответ на комментарий №3) > (В ответ на комментарий №2) > > Думаю реализовать вариант с циклическим опросом pid-файла. Достаточно ли > > будет 10-и раз, с интервалом 0.1 с? > > Ну тогда хотя бы 10 раз по 0,5 с на случай одновременного запуска сервисов > через systemd при старте машины. Не вижу смысла дробить секундный интервал > опроса по 0,1 с. Я же написал, что у меня для запуска единичного сервиса даже > полсекунды не хватает. Проще вставить секунду и не маяться. В apache2-2.2.22-alt11 сделал возможность настройки таймаутов на старт/останов через переменные определённые в /etc/sysconfig/httpd2 (по умолчанию закоментированны): # For start/stop httpd2 #WAITSTOP=300 #WAITGRACEFULSTOP=3000 #USLEEPSTART=100000 #LOOPSSTART=10