Open nfettinger opened 4 years ago
Try "system.daemon.set = true", it's the setting I use with the latest git and rtorrent loads as a daemon without issue running as a systemd service.
[Unit]
Description=rTorrent
After=network.target
[Service]
Type=simple
User=1000
Group=1000
KillMode=none
# Modify the next line to the absolute path for rtorrent.lock, for example
ExecStartPre=-/bin/rm -f /home/roberth/rtorrent/work/rtorrent.lock
ExecStart=/usr/bin/rtorrent -o system.daemon.set=true
ExecStop=/bin/kill -9 $MAINPID
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
This one is working for me, just remember to change user, paths etc to correspond to your setup. I use the daemon mode.
You don't need ExecStop=/bin/kill -9 $MAINPID, systemd kills the service on its own without issues using KillMode=process. Also restart should be set to "on-failure", so systemd only restarts rtorrent when the service crashes. You can also limit the number of time the service restarts in the Unit like, [Unit] StartLimitInterval=200 StartLimitBurst=6
My systemd looks like this and I've never had any issue with it in 2~3 years: system.daemon.set=true goes first line in rtorrent.rc
[Unit] Description=rtorrent daemon Wants=network.target After=network.target StartLimitInterval=200 StartLimitBurst=6
[Service]
Type=simple
KillMode=process
Restart=on-failure
RestartSec=30
User=
Group=
ExecStartPre=-/bin/rm -f /
[Install] WantedBy=multi-user.target
source: https://www.freedesktop.org/software/systemd/man/systemd.service.html
Can someone clear up the versions when each of these should be used?
system.daemon=true
vs system.daemon.set=true
There are several examples of each being used, but without an adequate level of documentation to discern one from the other.
# Run the rTorrent process as a daemon in the background
# (and control via XMLRPC sockets)
#system.daemon.set = true
#network.scgi.open_local = (cat,(session.path),rtorrent.sock)
#execute.nothrow = chmod,770,(cat,(session.path),rtorrent.sock)
https://github.com/rakshasa/rtorrent/blob/f37dd0d5c238dc1d7d4739c64680b592dbd5e72f/doc/rtorrent.rc
# Run rTorrent as a daemon, controlled via XMLRPC.
#
#system.daemon.set = false
https://github.com/rakshasa/rtorrent/search?q=system.daemon.set&unscoped_q=system.daemon.set
As with (almost) all $command/$command.set pairs, the former returns the current setting, while the latter allows you to change it. As such, system.daemon=true
doesn't actually change anything, the true
just gets ignored.
There is no need to delete rtorrent.lock if you set in config:
session.use_lock.set = no
My systemd service is:
cat rtorrent@.service
[Unit]
Description=rTorrent
After=network-online.target local-fs.target
[Service]
Type=simple
KillMode=process
User=%I
PIDFile=/run/rtorrent.pid
ExecStart=/usr/local/bin/rtorrent -n -o import=/home/%I/.rtorrent.rc
LimitNOFILE=8192
[Install]
WantedBy=multi-user.target
You can enable it with:
systemctl enable rtorrent@user.service
That setting is good if you want/don't care about multiples instances. My rtorrent is on a seedbox, and I don't want to worry about someone/something else other than systemd starting another rtorrent session/process on the same user.
The proper way to handle stale locks is this:
https://github.com/pyroscope/pimp-my-box/blob/master/roles/rtorrent-ps/templates/rtps.service#L43
I am trying to configure RTorrent to run as a service without screen/xterm/etc I am using the new
system.daemon = true
flag in the .rc configuration file (as well as in ExecStart= with -o), however it is not making any difference.rTorrent 0.9.8/0.13.8
journalctl -xe entry: