我试图rtorrent
以 运行systemd service
,但服务无法启动。这是配置文件和我可以获得的任何日志。如果需要,请询问更多信息。我在跑步:
$ 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'.
配置文件..
[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
更多日志:
$ 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'.
到目前为止,我已将用户添加rt
到adm
组中,但我不明白为什么tmux
不能以rt
.rt
由于启用-linger选项,我还授权用户启动服务:loginctl enable-linger rt
我首先使用rt
以下命令添加用户:sudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rt
。如何以专用用户身份rtorrent
运行systemd
服务?tmux
或者还有其他方法可以将其作为服务运行吗systemd
?非常感谢任何帮助。
更新:
因此,为了重新开始,我创建了一个名为rtorrent
:的新用户sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent
并将/etc/systemd/system/rtorrent.service
文件更改为此(还添加system.daemon = true
了/home/rtorrent/.rtorrent.rc
,因为这个帖子):
[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
但毕竟我得到了这个错误:
$ 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)
为什么会发生这种情况?我做错了什么?
更新2:
还有一件事,这个帖子建议不要将任何文件放在 中/etc/systemd/system/
,而是将它们放在/usr/local/lib/systemd/system
基于 Debian 的系统中的/lib/systemd/system
.因此,我将 移到unit-file
那里,并在启用它时,它自动创建了一个symlink
to /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)
答案1
我不明白为什么有人会想要一个tmux
围绕着你的rtorrent
。其功能是什么tmux
?你可以尝试https://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
如果你绝对想要额外的进程开销。
无论如何,创建/etc/systemd/system/rtorrent.service
一个
[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
这应该回答你的最后一个问题。
答案2
rtorrent 作为守护进程和 screen / tmux
从 rtorrent 0.9.7 开始,screen / tmux不再需要将 rtorrent 作为系统范围的守护进程运行如果你不需要它的控制台界面。以前这是强制性的,因为 rtorrent 需要控制活动终端,即使您仅使用外部接口(例如 ruTorrent)通过 SCGI 管理您的 torrent。
如果您确实想使用 screen 或 tmux 运行 rtorrent 以便能够使用终端控制它,请参阅这个答案
只需将以下配置添加到您的rtorrent.rc
文件中即可将 rtorrent 作为守护进程运行:
system.daemon.set = true
你只能使用外部软件来控制它通过 SCGI,因此您还必须在配置文件中配置 SCGI:
# Bind SCGI to localhost only on port 5000
network.scgi.open_port = 127.0.0.1:5000
笔记:您的配置文件可能已经包含scgi_port = ...
指令。这是打开 SCGI 端口的旧方法,与上面的方法等效,但不要将它们都放在配置文件中,否则 rtorrent 会抱怨端口已打开:Error in option file: <file>:<line>: SCGI already enabled.
。
服务档案
Ljm Dullaart 之前的回答关于服务文件的外观是正确的。但您必须注意使用中的 rtorrent 配置文件。
默认情况下,rtorrent 会加载该~/.rtorrent.rc
文件作为其配置文件。如果您还使用-o import ~/.rtorrent.rc
单元文件中的选项加载它,它将使 rtorrent 加载该文件两次。它会导致 rtorrent 抱怨 SCGI 端口已打开,因为它读取了network.scgi.open_port
或scgi_port
config 行两次。您还应该添加选项-n
开关以防止 rtorrent 读取其默认配置文件
单元文件/etc/systemd/system/rtorrent.service
应如下所示:
[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
答案3
这对我有帮助:
按照描述安装默认配置这里。该页面包含下载和更新配置以使用当前用户名的脚本。
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/
在 config 中取消注释这 3 行:
system.daemon.set = true network.scgi.open_local = (cat,(session.path),rpc.socket) execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
按照中所述启动服务这个答案,但不指定
-o
参数。ExecStart=/usr/bin/rtorrent
rtorrent
自动从中获取配置~/.rtorrent.rc
。
如果您在日志中看到大量这些错误,您就会知道配置是否加载了两次:
1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.