Estoy intentando ejecutarlo rtorrent
como systemd service
, pero el servicio no se inicia. Aquí está el archivo de configuración y cualquier registro que pueda obtener. Solicite más información si es necesario. Estoy corriendo:
$ 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'.
El archivo de configuración..
[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
Algunos registros más:
$ 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'.
Hasta ahora he agregado al usuario rt
al adm
grupo, pero no puedo entender por qué tmux
no se puede iniciar como rt
. También autoricé rt
al usuario a iniciar servicios gracias a la opción enable-linger: loginctl enable-linger rt
primero agregué al rt
usuario con: sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt
. ¿Cómo hacer que rtorrent
se ejecute como systemd
servicio con tmux
un usuario dedicado? ¿O hay alguna otra forma de ejecutarlo como servicio systemd
? Cualquier ayuda es muy apreciada.
ACTUALIZAR:
Entonces, solo para comenzar de nuevo, creé un nuevo usuario llamado rtorrent
con: sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent
y cambié el /etc/systemd/system/rtorrent.service
archivo a este (también system.daemon = true
agregué /home/rtorrent/.rtorrent.rc
,debido a esta publicación):
[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
Pero después de todo me sale este error:
$ 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 qué está pasando esto? ¿Que estoy haciendo mal?
ACTUALIZACIÓN 2:
Una cosa más,Esta publicaciónSugiero no colocar ningún archivo en /etc/systemd/system/
, sino en su lugar, colocarlos en /usr/local/lib/systemd/system
el que está en los sistemas basados en Debian /lib/systemd/system
. Por lo tanto, moví unit-file
allí y al habilitarlo, automáticamente creó un symlink
to /etc/systemd/system/
. Pero aún así me sale este error:
$ 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)
Respuesta1
No entiendo por qué alguien querría estar tmux
cerca de ti rtorrent
. ¿Cuál es la función del tmux
aquí? Tu podrías intentarhttps://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
si absolutamente desea esa sobrecarga de proceso adicional.
De todos modos, crea un /etc/systemd/system/rtorrent.service
con
[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
Eso debería responder a tu última pregunta.
Respuesta2
rtorrent como demonio y pantalla/tmux
A partir de rtorrent 0.9.7, pantalla/tmuxya no es necesarioejecutar rtorrent como un demonio para todo el sistemasi no necesitas su interfaz de consola. Anteriormente era obligatorio ya que rtorrent requería que se controlara un terminal activo, incluso si solo usabas una interfaz externa (por ejemplo, ruTorrent) para administrar tu torrent a través de SCGI.
Si realmente desea ejecutar rtorrent usando screen o tmux para poder controlarlo usando una terminal, consulteesta respuesta
Simplemente agregue la siguiente configuración a su rtorrent.rc
archivo para ejecutar rtorrent como demonio:
system.daemon.set = true
Túsólo podrá controlarlo mediante un software externovía SCGI, por lo que también debes configurar SCGI en el archivo de configuración:
# Bind SCGI to localhost only on port 5000
network.scgi.open_port = 127.0.0.1:5000
Nota: es posible que su archivo de configuración ya incluya una scgi_port = ...
directiva. Es la forma más antigua de abrir el puerto SCGI y es equivalente a la anterior, pero no coloque ambos en su archivo de configuración o rtorrent se quejará de que el puerto ya está abierto: Error in option file: <file>:<line>: SCGI already enabled.
.
Archivo de servicio
La respuesta anterior de Ljm Dullaart es correcta sobre cómo debe verse el archivo de servicio. Pero debes prestar atención al archivo de configuración de rtorrent en uso.
De forma predeterminada, rtorrent cargará el ~/.rtorrent.rc
archivo como su archivo de configuración. Si también lo carga usando la -o import ~/.rtorrent.rc
opción en su archivo de unidad, hará que rtorrent cargue el archivodos veces. Resulta que rtorrent se queja de que el puerto SCGI ya está abierto ya que lee las líneas de configuración network.scgi.open_port
o scgi_port
dos veces. También debe agregar el -n
interruptor de opción para evitar que rtorrent lea su archivo de configuración predeterminado.
El archivo de la unidad /etc/systemd/system/rtorrent.service
debería verse así:
[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
Respuesta3
Esto es lo que me ayudó:
Instale la configuración predeterminada como se describeaquí. Esa página contiene una secuencia de comandos que descarga y actualiza la configuración para usar el nombre de usuario actual.
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/
Descomente estas 3 líneas en config:
system.daemon.set = true network.scgi.open_local = (cat,(session.path),rpc.socket) execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
Inicie el servicio como se describe enesta respuesta, pero no especifique
-o
el parámetro.ExecStart=/usr/bin/rtorrent
rtorrent
recoge la configuración~/.rtorrent.rc
automáticamente.
Sabrá si la configuración se cargó dos veces si ve muchos de estos errores en los registros:
1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.