LINUX.ORG.RU

transmission.socket

 , ,


0

1

Привет!

Не удаётся прикрутить systemd socket activation(по типу inetd) для transmission-daemon. Сервис стартует при обращении к сокету(web ui), но ответ не приходит

% cat transmission.socket
[Unit]
Description=transmission-daemon socket
After=network.target

[Socket]
ListenStream=0.0.0.0:9091

[Install]
WantedBy=sockets.target

% cat transmission.service
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=transmission
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

% sudo netstat -46nlpt|grep -P '(9091|transm)'
tcp        0      0 0.0.0.0:51413           0.0.0.0:*               LISTEN      30240/transmission- 
tcp        1      0 0.0.0.0:9091            0.0.0.0:*               LISTEN      1/init              
tcp6       0      0 :::51413                :::*                    LISTEN      30240/transmission-

Если запустить сервис вручную, то всё работает нормально. Этому механизму нужна поддержка со стороны приложения?

Нашёл аналогичный случай. тоже не решён https://bbs.archlinux.org/viewtopic.php?id=189265

Этому механизму нужна поддержка со стороны приложения?

Да. systemd.socket(5):

Note that the daemon software configured for socket activation with socket units needs to be able to accept sockets from systemd, either via systemd's native socket passing interface (see sd_listen_fds(3) for details) or via the traditional inetd(8)-style socket passing (i.e. sockets passed in via standard input and output, using StandardInput=socket in the service file).

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)

Оффтоп: кстати, а зачем ему сокет-активация? Это же торрентокачалка, она должна быть всегда запущена...

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

Спасибо, жаль, я думал это универсальный метод.

она должна быть всегда запущена...

приходится тушить, hdd заметно шумит по ночам, когда начинает раздавать. Соответственно потом надо снова запускать, так оно хотя бы запускалось по требованию(добавлению закачки). Тогда наверное обойдусь включением по расписанию

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

Это технически нельзя сделать без модификации приложений. Нельзя «отмотать» передачу данных назад во времени, чтобы приложение могло принять то же самое соединение повторно. Такие дела.

А вообще — ну да, сделай расписание... Пусть поутру запускается опять и спокойно себе работает. В крайнем случае, можно сделать два systemd'шных таймера: один (основной) запускает transmission.service, второй запускает вспомогательный юнит, в котором ExecStart=/usr/bin/systemctl stop transmission.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Я посмотрел, там есть ограничение скорости с расписанием, наверное получится обойтись этим.

Можно например этот сервис вешать на какой-то внутренний интерфейс(например 127.0.0.x) (делать так, чтобы он видел только его, systemd же умеет виртуализовывать сеть в какой то мере(PrivateNetwork?)), и проксировать через systemd, когда этот сервис запущен

disarmer ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.