如何在專用使用者下將 rtorrent 作為 systemd 服務執行?
我正在嘗試以
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
由於 enable-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
in/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: 還有一件事,這篇文章建議不要刪除. 因此,我將它移到了那裡,啟用它時,它會自動創建一個to 。但是,我仍然收到此錯誤:
/etc/systemd/system/``/usr/local/lib/systemd/system``/lib/systemd/system``unit-file``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)
rtorrent 作為守護程序和螢幕 / 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
配置行兩次。您還應該添加-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
我不明白為什麼有人會想要一個
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
那應該回答你的最後一個問題。