¿Cómo ejecutar rtorrent como servicio systemd con un usuario dedicado?

¿Cómo ejecutar rtorrent como servicio systemd con un usuario dedicado?

Estoy intentando ejecutarlo rtorrentcomo 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 rtal admgrupo, pero no puedo entender por qué tmuxno se puede iniciar como rt. También autoricé rtal usuario a iniciar servicios gracias a la opción enable-linger: loginctl enable-linger rt primero agregué al rtusuario con: sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt. ¿Cómo hacer que rtorrentse ejecute como systemdservicio con tmuxun 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 rtorrentcon: sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent y cambié el /etc/systemd/system/rtorrent.servicearchivo a este (también system.daemon = trueagregué /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/systemel que está en los sistemas basados ​​en Debian /lib/systemd/system. Por lo tanto, moví unit-fileallí y al habilitarlo, automáticamente creó un symlinkto /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 tmuxcerca de ti rtorrent. ¿Cuál es la función del tmuxaquí? 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.servicecon

[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.rcarchivo para ejecutar rtorrent como demonio:

system.daemon.set = true

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.rcarchivo como su archivo de configuración. Si también lo carga usando la -o import ~/.rtorrent.rcopció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_porto scgi_portdos veces. También debe agregar el -ninterruptor de opción para evitar que rtorrent lea su archivo de configuración predeterminado.

El archivo de la unidad /etc/systemd/system/rtorrent.servicedeberí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ó:

  1. 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/
    
  2. 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)
    
  3. Inicie el servicio como se describe enesta respuesta, pero no especifique -oel parámetro.

    ExecStart=/usr/bin/rtorrent
    

    rtorrentrecoge la configuración ~/.rtorrent.rcautomá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.'.

información relacionada