Различия

Показаны различия между двумя версиями страницы.


rtorrent [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== RTorrent консольный BitTorrent клиент ======
  
 +**rtorrent** - консольный клиент P2P. Домашняя страница [[https://github.com/rakshasa/rtorrent]].
 +
 +Запуск rtorrent через [[screen]]:
 +
 +<code bash>
 +#!/bin/sh
 +#############
 +###<Notes>###
 +#############
 +# This script depends on screen.
 +# For the stop function to work, you must set an
 +# explicit session directory using ABSOLUTE paths (no, ~ is not absolute) in your rtorrent.rc.
 +# If you typically just start rtorrent with just "rtorrent" on the
 +# command line, all you need to change is the "user" option.
 +# Attach to the screen session as your user with 
 +# "screen -dr rtorrent". Change "rtorrent" with srnname option.
 +# Licensed under the GPLv2 by lostnihilist: lostnihilist _at_ gmail _dot_ com
 +##############
 +###</Notes>###
 +##############
 +
 +#######################
 +##Start Configuration##
 +#######################
 +# You can specify your configuration in a different file 
 +# (so that it is saved with upgrades, saved in your home directory,
 +# or whateve reason you want to)
 +# by commenting out/deleting the configuration lines and placing them
 +# in a text file (say /home/user/.rtorrent.init.conf) exactly as you would
 +# have written them here (you can leave the comments if you desire
 +# and then uncommenting the following line correcting the path/filename 
 +# for the one you used. note the space after the ".".
 +# . /etc/rtorrent.init.conf
 +
 +#Do not put a space on either side of the equal signs e.g.
 +# user = user 
 +# will not work
 +# system user to run as
 +user="darkfire"
 +
 +# the system group to run as, not implemented, see d_start for beginning implementation
 +# group=`id -ng "$user"`
 +
 +# the full path to the filename where you store your rtorrent configuration
 +config="`su -c 'echo $HOME' $user`/.rtorrent.rc"
 +
 +# set of options to run with
 +options=""
 +
 +# default directory for screen, needs to be an absolute path
 +base="`su -c 'echo $HOME' $user`"
 +
 +# name of screen session
 +srnname="rtorrent"
 +
 +# file to log to (makes for easier debugging if something goes wrong)
 +logfile="/var/log/rtorrentInit.log"
 +#######################
 +###END CONFIGURATION###
 +#######################
 +PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
 +DESC="rtorrent"
 +NAME=rtorrent
 +DAEMON=$NAME
 +SCRIPTNAME=/etc/init.d/$NAME
 +
 +checkcnfg() {
 +    exists=0
 +    for i in `echo "$PATH" | tr ':' '\n'` ; do
 +        if [ -f $i/$NAME ] ; then
 +            exists=1
 +            break
 +        fi
 +    done
 +    if [ $exists -eq 0 ] ; then
 +        echo "cannot find rtorrent binary in PATH $PATH" | tee -a "$logfile" >&2
 +        exit 3
 +    fi
 +    if ! [ -r "${config}" ] ; then 
 +        echo "cannot find readable config ${config}. check that it is there and permissions are appropriate" | tee -a "$logfile" >&2
 +        exit 3 
 +    fi 
 +    session=`getsession "$config"
 +    if ! [ -d "${session}" ] ; then
 +        echo "cannot find readable session directory ${session} from config ${config}. check permissions" | tee -a "$logfile" >&2
 +        exit 3
 +    fi
 +}
 +
 +d_start() {
 +  [ -d "${base}" ] && cd "${base}"
 +  stty stop undef && stty start undef
 +  su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "screen -dm -S ${srnname} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
 +  # this works for the screen command, but starting rtorrent below adopts screen session gid
 +  # even if it is not the screen session we started (e.g. running under an undesirable gid
 +  #su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "sg \"$group\" -c \"screen -fn -dm -S ${srnname} 2>&1 1>/dev/null\"" ${user} | tee -a "$logfile" >&2
 +  su -c "screen -S "${srnname}" -X screen rtorrent ${options} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
 +}
 +
 +d_stop() {
 +    session=`getsession "$config"`
 +    if ! [ -s ${session}/rtorrent.lock ] ; then
 +        return
 +    fi
 +    pid=`cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
 +    if ps -A | grep -sq ${pid}.*rtorrent ; then # make sure the pid doesn't belong to another process
 +        kill -s INT ${pid}
 +    fi
 +}
 +
 +getsession() { 
 +    session=`cat "$1" | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//" `
 +    echo $session
 +}
 +
 +checkcnfg
 +
 +case "$1" in
 +  start)
 +    echo -n "Starting $DESC: $NAME"
 +    d_start
 +    echo "."
 +    ;;
 +  stop)
 +    echo -n "Stopping $DESC: $NAME"
 +    d_stop
 +    echo "."
 +    ;;
 +  restart|force-reload)
 +    echo -n "Restarting $DESC: $NAME"
 +    d_stop
 +    sleep 1
 +    d_start
 +    echo "."
 +    ;;
 +  *)
 +    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
 +    exit 1
 +    ;;
 +esac
 +
 +exit 0
 +</code>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!