Я пытаюсь запуститься rtorrent
как systemd service
, но служба не запускается. Вот файл конфигурации и любой журнал, который я смог получить. Если нужно, спрашивайте больше информации. Я запускаю:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
$ systemctl status rtorrent
● rtorrent.service - rTorrent
Loaded: loaded (/etc/systemd/system/rtorrent.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-05-27 08:52:43 EEST; 5min ago
Process: 20199 ExecStart=/usr/bin/tmux new-session -d -P -s rt -n rtorrent /usr/bin/rtorrent (code=exited, status=0/SUCCESS)
Process: 20205 ExecStop=/usr/bin/tmux send-keys -t rt:rtorrent C-q (code=exited, status=1/FAILURE)
Main PID: 20201 (code=exited, status=0/SUCCESS)
May 27 08:52:43 $MACHINE systemd[1]: Starting rTorrent...
May 27 08:52:43 $MACHINE tmux[20199]: rt:
May 27 08:52:43 $MACHINE systemd[1]: Started rTorrent.
May 27 08:52:43 $MACHINE tmux[20205]: no server running on /tmp/tmux-110/default
May 27 08:52:43 $MACHINE systemd[1]: rtorrent.service: Control process exited, code=exited, status=1/FAILURE
May 27 08:52:43 $MACHINE systemd[1]: rtorrent.service: Failed with result 'exit-code'.
Файл конфигурации..
[Unit]
Description=rTorrent
Requires=network.target local-fs.target
[Service]
Type=forking
KillMode=none
User=rt
Group=adm
ExecStart=/usr/bin/tmux new-session -d -P -s rt -n rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/tmux send-keys -t rt:rtorrent C-q
WorkingDirectory=/tmp/tmux-110/
[Install]
WantedBy=multi-user.target
Еще несколько логов:
$ journalctl -u rtorrent
May 27 08:52:43 $MACHINE systemd[1]: Starting rTorrent...
May 27 08:52:43 $MACHINE tmux[20199]: rt:
May 27 08:52:43 $MACHINE systemd[1]: Started rTorrent.
May 27 08:52:43 $MACHINE tmux[20205]: no server running on /tmp/tmux-110/default
May 27 08:52:43 $MACHINE systemd[1]: rtorrent.service: Control process exited, code=exited, status=1/FAILURE
May 27 08:52:43 $MACHINE systemd[1]: rtorrent.service: Failed with result 'exit-code'.
Пока что я добавил пользователя rt
в adm
группу, но не могу понять, почему tmux
он не может быть запущен как rt
. Я также разрешил rt
пользователю запускать службы благодаря опции enable-linger: loginctl enable-linger rt
Сначала я добавил rt
пользователя с помощью: sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt
. Как запустить rtorrent
как systemd
службу с помощью tmux
выделенного пользователя? Или есть другой способ запустить его как службу с помощью systemd
? Любая помощь действительно ценится.
ОБНОВЛЯТЬ:
Итак, чтобы просто начать все заново, я создал нового пользователя с именем rtorrent
with: sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent
и изменил /etc/systemd/system/rtorrent.service
файл на этот (также system.daemon = true
добавив /home/rtorrent/.rtorrent.rc
,из-за этого поста):
[Unit]
Description=rTorrent System Daemon
After=network.target
[Service]
Type=simple
User=rtorrent
Group=rtorrent
ExecStartPre=-/bin/rm -f /home/rtorrent/.session/rtorrent.lock
ExecStart=/usr/bin/rtorrent -o import=/home/rtorrent/.rtorrent.rc
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
Но в конце концов я получаю эту ошибку:
$ systemctl status rtorrent
● rtorrent.service - rTorrent System Daemon
Loaded: loaded (/etc/systemd/system/rtorrent.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2021-05-27 10:12:26 EEST; 2s ago
Process: 22855 ExecStartPre=/bin/rm -f /home/rtorrent/.session/rtorrent.lock (code=exited, status=0/SUCCESS)
Process: 22856 ExecStart=/usr/bin/rtorrent -o import=/home/rtorrent/.rtorrent.rc (code=exited, status=255/EXCEPTION)
Main PID: 22856 (code=exited, status=255/EXCEPTION)
Почему это происходит? Что я делаю не так?
ОБНОВЛЕНИЕ 2:
Еще кое-что,Эта почтапредлагаю не перетаскивать файлы в /etc/systemd/system/
, а вместо этого перетаскивать их в /usr/local/lib/systemd/system
, который в системах на основе Debian находится в /lib/systemd/system
. Поэтому я переместил unit-file
туда и при его включении он автоматически создал symlink
в /etc/systemd/system/
. Но все равно, я получаю эту ошибку:
$ sudo systemctl status rtorrent
● rtorrent.service - rTorrent System Daemon
Loaded: loaded (/lib/systemd/system/rtorrent.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2021-05-27 10:39:14 EEST; 924ms ago
Process: 24530 ExecStartPre=/bin/rm -f /home/rtorrent/.session/rtorrent.lock (code=exited, status=0/SUCCESS)
Process: 24531 ExecStart=/usr/bin/rtorrent -o import=/home/rtorrent/.rtorrent.rc (code=exited, status=255/EXCEPTION)
Main PID: 24531 (code=exited, status=255/EXCEPTION)
решение1
Я не понимаю, зачем кому-то может понадобиться tmux
вокруг вашего rtorrent
. Какова функция здесь tmux
? Вы можете попробоватьhttps://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
если вы действительно хотите эти дополнительные накладные расходы.
В любом случае, создайте /etc/systemd/system/rtorrent.service
с помощью
[Unit]
Description=rTorrent System Daemon
After=network.target
[Service]
Type=simple
User=rtorrent
Group=rtorrent
ExecStartPre=-/bin/rm -f /home/rt/.session/rtorrent.lock
ExecStart=/usr/bin/rtorrent -o import=/home/rt/rtorrent.rc
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
Это должен быть ответ на ваш последний вопрос.
решение2
rtorrent как демон и экран / tmux
Начиная с rtorrent 0.9.7, screen / tmuxбольше не требуетсязапустить rtorrent как общесистемный демонесли вам не нужен его консольный интерфейс. Раньше это было обязательным, поскольку rtorrent требовал активного терминала для управления, даже если вы использовали только внешний интерфейс (например, ruTorrent) для управления торрентом через SCGI.
Если вы действительно хотите запустить rtorrent с помощью screen или tmux, чтобы иметь возможность управлять им с помощью терминала, см.этот ответ
Просто добавьте следующую конфигурацию в свой rtorrent.rc
файл, чтобы запустить rtorrent как демон:
system.daemon.set = true
Тысможет управлять им только с помощью внешнего программного обеспечениячерез SCGI, поэтому необходимо также настроить SCGI в конфигурационном файле:
# Bind SCGI to localhost only on port 5000
network.scgi.open_port = 127.0.0.1:5000
Примечание: ваш файл конфигурации может уже включать scgi_port = ...
директиву. Это старый способ открытия порта SCGI, эквивалентный приведенному выше, но не помещайте их оба в ваш файл конфигурации, иначе rtorrent будет жаловаться на то, что порт уже открыт: Error in option file: <file>:<line>: SCGI already enabled.
.
Файл обслуживания
Предыдущий ответ Ljm Dullaart верен относительно того, как должен выглядеть файл сервиса. Но вы должны обратить внимание на используемый файл конфигурации rtorrent.
По умолчанию rtorrent загрузит ~/.rtorrent.rc
файл как свой файл конфигурации. Если вы также загрузите его с помощью -o import ~/.rtorrent.rc
опции в вашем файле unit, это заставит rtorrent загрузить файлдважды. Это приводит к тому, что rtorrent жалуется на то, что порт SCGI уже открыт, поскольку он дважды читает строки конфигурации network.scgi.open_port
или . Вам также следует добавить переключатель параметров, чтобы запретить rtorrent читать свой файл конфигурации по умолчаниюscgi_port
-n
Файл модуля /etc/systemd/system/rtorrent.service
должен выглядеть следующим образом:
[Unit]
Description=rTorrent system daemon
After=network.target
[Service]
Type=simple
User=torrent
Group=torrent
# Change these settings to match your install:
Environment=RTORRENT_DIR=/home/torrent
Environment=RTORRENT_CONFIG=${RTORRENT_DIR}/.rtorrent.rc
Environment=SESSION_DIR=${RTORRENT_DIR}/session
ExecStartPre=/bin/rm -f ${SESSION_DIR}/rtorrent.lock
ExecStart=/usr/bin/rtorrent -n -o import=${RTORRENT_CONFIG}
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
решение3
Вот что мне помогло:
Установите конфигурацию по умолчанию, как описаноздесь. Эта страница содержит скрипт, который загружает и обновляет конфигурацию для использования текущего имени пользователя.
curl -Ls "https://raw.githubusercontent.com/wiki/rakshasa/rtorrent/CONFIG-Template.md" \ | sed -ne "/^######/,/^### END/p" \ | sed -re "s:/home/USERNAME:$HOME:" >~/.rtorrent.rc mkdir -p ~/rtorrent/
Раскомментируйте эти 3 строки в конфигурации:
system.daemon.set = true network.scgi.open_local = (cat,(session.path),rpc.socket) execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
Запустите службу, как описано вэтот ответ, но не указывайте
-o
параметр.ExecStart=/usr/bin/rtorrent
rtorrent
автоматически подбирает конфигурацию~/.rtorrent.rc
.
Вы поймете, что конфигурация была загружена дважды, если увидите в журналах множество таких ошибок:
1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.