LINUX.ORG.RU

systemd socket activation

 


0

2

Привет Хочу чтобы systemd запускал два tftp сервера на двух разных портах например на 69 и 70. Самое простое - создать tftp.service и tftp.socket и скажем tftp70.service и tftp70.socket

а нельзя ли сделать по красивее и обойтись только одной парой tftp.service и tftp.socket? Сколько не бился не работает... если в tftp.socket написать ListenDatagram=69 ListenDatagram=70 то слушает на двух но сервис не поднимает ни на одном.. Есть ли вообще более красивое решение чем для каждого порта плодить пару service/socket? Спасибо

Либо указать в сокете Accept=true (и переименовать сервис в tftp@.service), либо сделать оба шаблонными по имени порта.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Последнее — это как раз правильный™ метод зафигачить много похожих юнитов.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Accept имеет смысл только для TCP, TFTP это UDP, так что не катит.. На счет шаблонов - буду разбираться, спасибо. но если не трудно, можно пример? и будет ли работать с socket activation?

mhollow
() автор топика
Ответ на: комментарий от mhollow

А, да, действительно, для датаграммных сокетов Accept не работает, сорри.

Тогда как-то так:

tftp@.socket:

[Socket]
ListenDatagram=%I

[Install]
WantedBy=sockets.target

tftp@.service:

[Unit]
Description=tftp daemon on port %I

[Service]
<всё так же, как и раньше>

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Ну в целом, да. Только надо подправить Requires=tftp@.socket в tftp@.service иначе результат бывает странный. Cпасибо.

mhollow
() автор топика
Ответ на: комментарий от mhollow

Действительно. Я забыл указать зависимости от сервиса к сокету.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.