전용 사용자로 rtorrent를 시스템 서비스로 실행하는 방법은 무엇입니까?

전용 사용자로 rtorrent를 시스템 서비스로 실행하는 방법은 무엇입니까?

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이해가 되지 않습니다 . -linger 옵션이 활성화되었으므로 사용자에게 서비스를 시작할 권한도 부여했습니다. 먼저 다음을 사용하여 사용자를 추가했습니다. 다음 명령: . 전용 사용자로 서비스를 실행하는 방법은 무엇입니까 ? 아니면 서비스로 실행하는 다른 방법이 있나요 ? 어떤 도움이라도 대단히 감사하겠습니다.tmuxrtrtloginctl enable-linger rtrtsudo adduser --system --gecos "rTorrent Client" --disabled-password --group --home /home/rt rtrtorrentsystemdtmuxsystemd

고쳐 쓰다:rtorrent그래서 다시 시작하기 위해 :이라는 새 사용자를 만들고 파일을 다음으로 변경했습니다 sudo adduser --system --gecos "rTorrent System Client" --disabled-password --group --home /home/rtorrent rtorrent ( 또한 ,/etc/systemd/system/rtorrent.servicesystem.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/lib/systemd/systemunit-filesymlink/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

데몬 및 screen/tmux로 rtorrent

rtorrent 0.9.7부터 screen/tmux더 이상 필요 없어요rtorrent를 시스템 전체 데몬으로 실행콘솔 인터페이스가 필요하지 않은 경우. 이전에는 SCGI를 통해 토렌트를 관리하기 위해 외부 인터페이스(예: ruTorrent)만 사용하는 경우에도 rtorrent가 활성 터미널을 제어해야 했기 때문에 이는 필수였습니다.

터미널을 사용하여 rtorrent를 제어할 수 있도록 screen 또는 tmux를 사용하여 rtorrent를 실행하려면 다음을 참조하세요.이 답변

rtorrent.rcrtorrent를 데몬으로 실행하려면 파일 에 다음 구성을 추가하기만 하면 됩니다 .

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는 network.scgi.open_port또는 config 라인을 두 번 읽기 때문에 SCGI 포트가 열려 있다고 불평하게 됩니다 scgi_port. 또한 -nrtorrent가 기본 구성 파일을 읽지 못하도록 옵션 스위치를 추가해야 합니다.

유닛 파일은 /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

이것은 나에게 도움이 되었습니다:

  1. 설명된 대로 기본 구성을 설치합니다.여기. 이 페이지에는 현재 사용자 이름을 사용하도록 구성을 다운로드하고 업데이트하는 스크립트가 포함되어 있습니다.

    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. 구성에서 다음 3줄의 주석 처리를 제거하세요.

    system.daemon.set = true
    network.scgi.open_local = (cat,(session.path),rpc.socket)
    execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
    
  3. 다음에 설명된 대로 서비스를 시작합니다.이 답변이지만 -o매개변수를 지정하지 않습니다.

    ExecStart=/usr/bin/rtorrent
    

    rtorrent자동으로 구성을 가져옵니다 ~/.rtorrent.rc.

로그에 다음과 같은 오류가 많이 표시되면 구성이 두 번 로드되고 있는지 알 수 있습니다.

1687310792 C Caught exception: 'Error in option file: ~/.rtorrent.rc:11: Invalid key.'.

관련 정보