Ich versuche, rtorrent
es als auszuführen systemd service
, aber der Dienst startet nicht. Hier ist die Konfigurationsdatei und alle Protokolle, die ich bekommen kann. Bitten Sie bei Bedarf um weitere Informationen. Ich verwende:
$ 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'.
Die Konfigurationsdatei..
[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
Noch ein paar Protokolle:
$ 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'.
Bisher habe ich den Benutzer rt
zur adm
Gruppe hinzugefügt, aber ich kann nicht herausfinden, warum tmux
er nicht als gestartet werden kann rt
. Ich habe rt
den Benutzer auch autorisiert, Dienste dank der Option „enable-linger“ zu starten: Ich habe den Benutzer loginctl enable-linger rt
zuerst mit hinzugefügt : . Wie kann ich ihn als Dienst mit als dedizierter Benutzer ausführen? Oder gibt es eine andere Möglichkeit, ihn als Dienst mit auszuführen ? Jede Hilfe ist sehr willkommen.rt
sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt
rtorrent
systemd
tmux
systemd
AKTUALISIEREN:
Um also einen Neustart zu bekommen, habe ich einen neuen Benutzer rtorrent
mit dem Namen erstellt: sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent
und die /etc/systemd/system/rtorrent.service
Datei folgendermaßen geändert (und auch system.daemon = true
hinzugefügt /home/rtorrent/.rtorrent.rc
,wegen diesem Beitrag):
[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
Aber schließlich erhalte ich diesen Fehler:
$ 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)
Warum passiert das? Was mache ich falsch?
UPDATE 2:
Eine Sache noch,Dieser Beitragschlage vor, keine Dateien in abzulegen /etc/systemd/system/
, sondern sie stattdessen in abzulegen, /usr/local/lib/systemd/system
was in Debian-basierten Systemen in liegt /lib/systemd/system
. Daher habe ich das dorthin verschoben und als ich es aktiviert habe, wurde automatisch ein in unit-file
erstellt . Aber ich erhalte immer noch diesen Fehler: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)
Antwort1
tmux
Ich verstehe nicht, warum jemand ein um Ihr haben möchte rtorrent
. Was ist die Funktion des tmux
hier? Sie könnten versuchenhttps://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
wenn Sie diesen zusätzlichen Prozessaufwand unbedingt wünschen.
Wie auch immer, erstellen Sie eine /etc/systemd/system/rtorrent.service
mit
[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
Das sollte Ihre letzte Frage beantworten.
Antwort2
rtorrent als Daemon und screen/tmux
Ab rtorrent 0.9.7, Bildschirm / tmuxist nicht mehr erforderlichum rorrent als systemweiten Daemon auszuführenwenn Sie die Konsolenschnittstelle nicht benötigen. Bisher war dies zwingend erforderlich, da für die Steuerung von rTorrent ein aktives Terminal erforderlich war, selbst wenn Sie zur Verwaltung Ihres Torrents über SCGI nur eine externe Schnittstelle (z. B. ruTorrent) verwendet haben.
Wenn Sie rTorrent wirklich mit screen oder tmux ausführen möchten, um es über ein Terminal steuern zu können, lesen Siediese Antwort
Fügen Sie Ihrer rtorrent.rc
Datei einfach die folgende Konfiguration hinzu, um rTorrent als Daemon auszuführen:
system.daemon.set = true
Dukann nur über eine externe Software gesteuert werdenüber SCGI, daher müssen Sie SCGI auch in der Konfigurationsdatei konfigurieren:
# Bind SCGI to localhost only on port 5000
network.scgi.open_port = 127.0.0.1:5000
Notiz: Ihre Konfigurationsdatei enthält möglicherweise bereits eine scgi_port = ...
Anweisung. Dies ist die ältere Methode zum Öffnen des SCGI-Ports und entspricht der obigen, aber fügen Sie nicht beide in Ihre Konfigurationsdatei ein, da rTorrent sonst eine Meldung ausgibt, dass der Port bereits geöffnet ist: Error in option file: <file>:<line>: SCGI already enabled.
.
Servicedatei
Die vorherige Antwort von Ljm Dullaart ist korrekt, was das Aussehen der Servicedatei betrifft. Sie müssen jedoch auf die verwendete rtorrent-Konfigurationsdatei achten.
Standardmäßig lädt rtorrent die ~/.rtorrent.rc
Datei als Konfigurationsdatei. Wenn Sie sie auch mit der -o import ~/.rtorrent.rc
Option in Ihrer Unit-Datei laden, lädt rtorrent die Dateizweimal. Dies führt dazu, dass rTorrent sich über den bereits geöffneten SCGI-Port beschwert, da es die network.scgi.open_port
oder scgi_port
Konfigurationszeilen zweimal liest. Sie sollten auch den -n
Optionsschalter hinzufügen, um zu verhindern, dass rTorrent seine Standardkonfigurationsdatei liest
Die Unit-Datei /etc/systemd/system/rtorrent.service
sollte folgendermaßen aussehen:
[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
Antwort3
Das hat mir geholfen:
Installieren Sie die Standardkonfiguration wie beschriebenHier. Diese Seite enthält ein Skript, das die Konfiguration herunterlädt und aktualisiert, um den aktuellen Benutzernamen zu verwenden.
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/
Entfernen Sie die Kommentarzeichen aus diesen 3 Zeilen in der Konfiguration:
system.daemon.set = true network.scgi.open_local = (cat,(session.path),rpc.socket) execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
Starten Sie den Dienst wie beschrieben indiese Antwort, aber geben Sie keinen
-o
Parameter an.ExecStart=/usr/bin/rtorrent
rtorrent
ruft die Konfiguration~/.rtorrent.rc
automatisch ab.
Sie wissen, ob die Konfiguration zweimal geladen wurde, wenn in den Protokollen viele dieser Fehler angezeigt werden:
1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.