Choose language

Portal Home > Knowledgebase > How-to > Seedboxes > Other software > rTorrent startup script


rTorrent startup script




To make rTorrent startup automatically every time when the server is rebooted you need to add a simple script.

#!/bin/sh
#############
######
#############
# 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
##############
######
##############

#######################
##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=""

# 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:*sessionspace:*=" | sed "s/^space:*sessionspace:*=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



and now you need to paste this script there

nano /etc/init.d/rtorrent
Now you need to edit "user" to your username. e.g. user="seedbox"

Now you need to change permission for that file
chmod 755 /etc/init.d/rtorrent


Now you need to add this script to startup
update-rc.d rtorrent defaults


Now you should be able to start/stop/restart rTorrent through this script, to check it use
service rtorrent restart

or
/etc/init.d/rtorrent restart


If everything is OK rTorrent will start automatically after reboot.

Was this answer helpful?

Add to Favourites Add to Favourites    Print this Article Print this Article

Also Read
Flexget installation (Views: 438)
Configure XBMC (Views: 10270)
megacmd installation (Views: 1387)