Bug 45072 - Недостает systemd .service файла
Summary: Недостает systemd .service файла
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: pdnsd (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Vladimir D. Seleznev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-29 22:00 MSK by Vyacheslav Dikonov
Modified: 2023-04-06 15:49 MSK (History)
2 users (show)

See Also:


Attachments
.service для systemd (628 bytes, text/plain)
2023-01-29 22:00 MSK, Vyacheslav Dikonov
no flags Details
proposed non-Type=forking unit file (440 bytes, text/plain)
2023-04-06 15:49 MSK, Arseny Maslennikov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vyacheslav Dikonov 2023-01-29 22:00:48 MSK
Created attachment 12382 [details]
.service для systemd

Предлагаю добавить в пакет файл pdnsd.service для более корректного запуска. 
В моем случае автоматически порождаемый .service оказывается кривым. Это приводит к ожиданию в несколько минут перед тем, как включится DNS и станет возможным доступ к сайтам. С прилагаемым файлом pdnsd.service в /lib/systemd/system все заработало корректно.
Comment 1 Vladimir D. Seleznev 2023-02-07 09:11:00 MSK
Comment on attachment 12382 [details]
.service для systemd

>[Unit]
>Description=SYSV: a caching dns proxy for small networks or dialin accounts
>Documentation=man=pdnsd(8) man:pdnsd-ctl(8) man:pdnsd.conf(5)
>SourcePath=/etc/rc.d/init.d/pdnsd
>Wants=network.target
>After=network.target
>Before=graphical.target
>Before=multi-user.target
>
>[Service]
>Type=forking
>
>Restart=on-failure
>TimeoutSec=1min
>IgnoreSIGPIPE=no
>KillMode=process
>GuessMainPID=no
>RemainAfterExit=no
>PIDFile=/var/run/pdnsd.pid
>ExecStart=/etc/rc.d/init.d/pdnsd start
>ExecStop=/etc/rc.d/init.d/pdnsd stop
>ExecReload=/etc/rc.d/init.d/pdnsd reload
>OOMScoreAdjust=-1000
>
>[Install]
>WantedBy=multi-user.target
>WantedBy=graphical.target

Why do it need mutli-user and graphical targets?
Comment 2 Vladimir D. Seleznev 2023-02-07 09:14:28 MSK
Does it really need mutli-user and graphical targets?
Comment 3 Vyacheslav Dikonov 2023-02-07 16:08:09 MSK
Мне нужно, чтобы DNS-кеш запустился работал уже в момент запуска рабочего стола, а не через 10 минут после (буквально!). Может быть есть способ лучше.
Comment 4 Arseny Maslennikov 2023-04-06 15:46:19 MSK
Comment on attachment 12382 [details]
.service для systemd

>[Unit]
>Description=SYSV: a caching dns proxy for small networks or dialin accounts
>Documentation=man=pdnsd(8) man:pdnsd-ctl(8) man:pdnsd.conf(5)
typo: не man=, а man:

>SourcePath=/etc/rc.d/init.d/pdnsd
Это метаинформация для юнитов-генератов (в данном случае из инит-скрипта). Упаковывать юнит с этим свойством в пакет неправильно.

>Wants=network.target
Этот таргет обычно зовут настройщики сети: etcnet, NM, connman, суппликанты для L2-авторизации... Я бы попробовал убрать директиву, но если это чему-то помешает на целевой системе, то можно и оставить. Вячеслав программой пользуется, ему виднее.

>After=network.target
>Before=graphical.target
>Before=multi-user.target
>
>[Service]
>Type=forking
Если уж писать и упаковывать юнит, то пусть лучше он будет сам программу pdnsd звать. То есть Type=simple или Type=exec. Повторять double-fork танцы — излишняя сложность.
>Restart=on-failure
>TimeoutSec=1min

>GuessMainPID=no
>RemainAfterExit=no
>PIDFile=/var/run/pdnsd.pid
>ExecStart=/etc/rc.d/init.d/pdnsd start
>ExecStop=/etc/rc.d/init.d/pdnsd stop
>ExecReload=/etc/rc.d/init.d/pdnsd reload
Всё это лишнее, если перевести на Type=simple.

>IgnoreSIGPIPE=no
>KillMode=process
Нужны ли эти директивы?
>OOMScoreAdjust=-1000
OOM score -1000 и даже -999 — это маловато IMHO, у journald нынче -250. Нужен некоторый инсайт про другие пакеты.

>[Install]
>WantedBy=multi-user.target
>WantedBy=graphical.target
Достаточно только первой строчки, graphical и multi-user когда-то называли соотв. runlevel 5 и runlevel 3.
Comment 5 Arseny Maslennikov 2023-04-06 15:49:04 MSK
Created attachment 12900 [details]
proposed non-Type=forking unit file

Предлагаю вот такой юнит. Оставил закомментированными директивы, про которые неясно, стали ли они не нужны.