Estou tentando executar rtorrent
como um systemd service
, mas o serviço não inicia. Aqui está o arquivo de configuração e qualquer log que eu puder obter. Peça mais informações se precisar. Eu estou correndo:
$ 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'.
O arquivo de configuração..
[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
Mais alguns registros:
$ 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'.
Até agora adicionei o usuário rt
ao adm
grupo, mas não consigo entender por que tmux
não pode ser iniciado como rt
. Também autorizei rt
o usuário a iniciar serviços graças à opção enable-linger: loginctl enable-linger rt
primeiro adicionei o rt
usuário com: sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt
. Como fazer rtorrent
funcionar como systemd
serviço tmux
como usuário dedicado? Ou existe alguma outra maneira de executá-lo como serviço systemd
? Qualquer ajuda é muito apreciada.
ATUALIZAR:
Então, apenas para começar do zero, criei um novo usuário chamado rtorrent
: sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent
e alterei o /etc/systemd/system/rtorrent.service
arquivo para este (adicionando system.daemon = true
também /home/rtorrent/.rtorrent.rc
,por causa dessa postagem):
[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
Mas afinal recebo este erro:
$ 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)
Por que isso está acontecendo? O que estou fazendo errado?
ATUALIZAÇÃO 2:
Mais uma coisa,Esta postagemsugiro não descartar nenhum arquivo no /etc/systemd/system/
, mas em vez disso, soltá-los em /usr/local/lib/systemd/system
sistemas baseados em Debian /lib/systemd/system
. Portanto, mudei o unit-file
lá e ao habilitá-lo, ele criou automaticamente um symlink
to /etc/systemd/system/
. Mas ainda assim, recebo este erro:
$ 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)
Responder1
Eu não entendo por que alguém iria querer um tmux
arquivo rtorrent
. Qual é a função do tmux
aqui? Você poderia tentarhttps://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
se você realmente deseja essa sobrecarga extra do processo.
De qualquer forma, crie um /etc/systemd/system/rtorrent.service
with
[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
Isso deve responder à sua última pergunta.
Responder2
rtorrent como daemon e screen/tmux
A partir do rtorrent 0.9.7, tela/tmuxnão é mais necessáriopara executar o rtorrent como um daemon de todo o sistemase você não precisa da interface do console. Anteriormente era obrigatório porque o rtorrent exigia um terminal ativo para ser controlado, mesmo se você usasse apenas uma interface externa (por exemplo, ruTorrent) para gerenciar seu torrent via SCGI.
Se você realmente deseja executar o rtorrent usando screen ou tmux para poder controlá-lo usando um terminal, consulteesta resposta
Basta adicionar a seguinte configuração ao seu rtorrent.rc
arquivo para executar o rtorrent como um daemon:
system.daemon.set = true
Vocêsó será capaz de controlá-lo usando um software externovia SCGI, então você também deve configurar o SCGI no arquivo de configuração:
# Bind SCGI to localhost only on port 5000
network.scgi.open_port = 127.0.0.1:5000
Observação: seu arquivo de configuração já pode incluir uma scgi_port = ...
diretiva. É a forma mais antiga de abrir a porta SCGI e é equivalente à anterior, mas não coloque os dois no seu arquivo de configuração ou o rtorrent reclamará que a porta já está aberta: Error in option file: <file>:<line>: SCGI already enabled.
.
Arquivo de serviço
A resposta anterior de Ljm Dullaart está correta sobre a aparência do arquivo de serviço. Mas você deve prestar atenção ao arquivo de configuração do rtorrent em uso.
Por padrão, o rtorrent carregará o ~/.rtorrent.rc
arquivo como seu arquivo de configuração. Se você também carregá-lo usando a -o import ~/.rtorrent.rc
opção em seu arquivo de unidade, fará com que o rtorrent carregue o arquivoduas vezes. O resultado é que o rtorrent reclama da porta SCGI já aberta, pois lê as linhas network.scgi.open_port
or config duas vezes. scgi_port
Você também deve adicionar a -n
opção para evitar que o rtorrent leia seu arquivo de configuração padrão
O arquivo da unidade /etc/systemd/system/rtorrent.service
deve ser semelhante a:
[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
Responder3
Isto é o que me ajudou:
Instale a configuração padrão conforme descritoaqui. Essa página contém um script que baixa e atualiza a configuração para usar o nome de usuário atual.
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/
Remova o comentário destas 3 linhas em config :
system.daemon.set = true network.scgi.open_local = (cat,(session.path),rpc.socket) execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
Inicie o serviço conforme descrito emesta resposta, mas não especifique
-o
o parâmetro.ExecStart=/usr/bin/rtorrent
rtorrent
pega a configuração~/.rtorrent.rc
automaticamente.
Você saberá se a configuração foi carregada duas vezes se vir muitos destes erros nos logs:
1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.