Version 3 (modified by egoguerillas, 15 years ago) (diff)

--

Deluge Init Scripts

  1. What is an init script?
  2. Init Scripts Based On Distribution
    1. Debian/Ubuntu? Init Script
    2. Fedora Init Script
    3. Gentoo Init Script
    4. Mandriva Init Script

Scripts found on this page, were originally posted here.

What is an init script?

Init Scripts Based On Distribution

Debian/Ubuntu? Init Script

All of this is copied from http://apocryph.org/2008/11/30/setting_deluge_headless_ubuntu_seedbox_windows_client/ Go there for more detailed information.

Put this in /etc/default/deluge-daemon and replace <username> with your username

# Configuration for /etc/init.d/deluge-daemon

# The init.d script will only run if this variable non-empty.
DELUGED_USER="<username>"             # !!!CHANGE THIS!!!!

# Should we run at startup?
RUN_AT_STARTUP="YES"

This should be placed in /etc/init.d/deluge-daemon

#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluge-daemon
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description:       Starts the deluge daemon with the user specified in
#                    /etc/default/deluge-daemon.
### END INIT INFO

# Author: Adolfo R. Brandes 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d"
DAEMON2=/usr/bin/deluge
DAEMON2_ARGS="-u web"
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME

# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
   log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
   exit 0
fi

if [ -z "$DELUGED_USER" ]
then
    log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
    exit 0
fi

#
# Function that starts the daemon/service
#
do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \
      --chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
   RETVAL1="$?"
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
   RETVAL2="$?"
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1

   start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \
      --chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
   RETVAL1="$?"
        sleep 2
   start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
      --chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
   RETVAL2="$?"
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
   # Return
   #   0 if daemon has been stopped
   #   1 if daemon was already stopped
   #   2 if daemon could not be stopped
   #   other if a failure occurred

   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
   RETVAL2="$?"
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
   RETVAL1="$?"
   [ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2

   rm -f $PIDFILE1 $PIDFILE2

   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}

case "$1" in
  start)
   [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
   do_start
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  stop)
   [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
   do_stop
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  restart|force-reload)
   log_daemon_msg "Restarting $DESC" "$NAME1"
   do_stop
   case "$?" in
     0|1)
      do_start
      case "$?" in
         0) log_end_msg 0 ;;
         1) log_end_msg 1 ;; # Old process is still running
         *) log_end_msg 1 ;; # Failed to start
      esac
      ;;
     *)
        # Failed to stop
      log_end_msg 1
      ;;
   esac
   ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
   exit 3
   ;;
esac

:

Make the script executable by root

sudo chmod 755 /etc/init.d/deluge-daemon

Run this script on start up

sudo update-rc.d deluge-daemon defaults

Start the daemon

sudo /etc/init.d/deluge-daemon start

Fedora Init Script

#!/bin/bash
# chkconfig: 345 85 15
# description: deluged is the Deulge bit torrent daemon. It performs downloads and manages torrents. Connect to the service through the configured port.
# Script to manage start and stopping the fedora service
# processname: deluged

    # Source function library.
    . /etc/init.d/functions

    RETVAL=0;

    start() {
        echo "Starting deluged service"
        daemon --user=deluge deluged -c /storage/fileshare/Torrents/.deluge/ -p 58846 -l /storage/fileshare/Torrents/.deluge/deluged.log
        RETVAL1=$?
        echo
        [ $RETVAL1 = 0 ] && touch /var/lock/subsys/deluged
        
        echo "Starting deluge webui"
        #daemon --user=deluge deluge -u web -c /storage/fileshare/Torrents/.deluge/ -l /storage/fileshare/Torrents/.deluge/deluge-web.log
        #deluge -u web -c /storage/fileshare/Torrents/.deluge/ -q &
        #cant find force background option in daemon function, so I add my own &
        runuser -s /bin/bash - deluge -c "ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1 ; deluge -u web -c /storage/fileshare/Torrents/.deluge/ -l /storage/fileshare/Torrents/.deluge/deluge-web.log &"
        [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"

        RETVAL2=$?
        echo
        [ $RETVAL2 = 0 ] && touch /var/lock/subsys/deluge-web
   
        RETVAL=1
        if [ $RETVAL1 == 0 ]; then
            if [ $RETVAL2 == 0 ]; then
                RETVAL=0
            fi
        fi
        return $RETVAL
    }

    stop() {
        echo "Stopping deluge webui"
        killproc deluge
        RETVAL1=$?
        echo
        [ $RETVAL1 = 0 ] && rm -f /var/lock/subsys/deluge-web

        echo "Stopping deluged service"
        killproc deluged
        RETVAL2=$?
        echo
        [ $RETVAL2 = 0 ] && rm -f /var/lock/subsys/deluged
    }

    restart() {
        stop
        start
    }

case $1 in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    status)
        status deluged
        status deluge
        RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
esac

    exit $RETVAL

Gentoo Init Script

Mandriva Init Script

#!/bin/bash
#
# Startup script for the deluged daemon (HappyWorker)
#
# chkconfig: 2345 84 09
#
# description: deluged is the Deluge bit torrent daemon. It performs downloads and manages torrents. Connect to the service through the configured port.
# Script to manage start and stopping the fedora service
# processname: deluged

### BEGIN INIT INFO
# Provides: deluged
# Should-Start:   $network
# Should-Stop:    $network
# Required-Start: $local_fs
# Required-Stop:  $local_fs
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: shadok
# Description: shadok is the Deluge bit torrent daemon. It performs downloads and manages torrents. Connect to the service through the configured port.
# Script to manage start and stopping the fedora service
# processname: deluged
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# Check that networking is up.
. /etc/sysconfig/network
[ "${NETWORKING}" = "no" ] && exit 0

DAEMON='deluged'
ACCOUNT='deluge'
HOME='/var/share/deluge'
# ----------- naming convention -----------

LOG="/var/log/$DAEMON"
PIDF="/var/run/${DAEMON}.pid"
LOCK="/var/lock/subsys/$DAEMON"
# ----------- basic checks -----------

[ ! -d "${HOME}" ] &&  gprintf "Can't find home %s, exit.\n" "${HOME}" && exit 1
[ -x '/usr/bin/deluged' -a -x '/usr/bin/deluge' ] || exit 0
#

case "$1" in
  daemon_start ) # real start
    [ `id -un` != "$ACCOUNT" ] && [ "$2" != '--test' ] && exit 3

    /usr/bin/deluged -c $HOME/.deluge/  -l $LOG -P $PIDF
    RETVAL=$?
    if [ $RETVAL -eq 0 ] ; then
       /usr/bin/deluge -u web -c $HOME/.deluge/ > $HOME/weluge.log 2>&1  &
       RETVAL=$?
       echo $!  >>  $PIDF
    fi
    ;;
  start)
    gprintf "Starting $DAEMON daemon: "
    touch  $LOG $PIDF
    chown $ACCOUNT:`id -g $ACCOUNT` $LOG $PIDF
    daemon -9 --user=$ACCOUNT --check $DAEMON /bin/ionice -c 3 $0 daemon_start
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch $LOCK
    ;;
  stop | smooth-stop)
    gprintf "Shutting down $DAEMON daemon: "
    [ -r "$PIDF" ] && pid=`cat $PIDF` 2>/dev/null
    #
    # kill first, think later
    #
    kill -TERM $pid >/dev/null 2>&1
    #
    # Saving state takes time: 10 sec
    #
    timeout=10
    for p in $pid ; do
       kill -s 0 $p 2>/dev/null
       for ((  ; 0==$?  && 0<$timeout ; timeout=$timeout - 1 )) do
          echo -n '.'
          sleep 1
          kill -s 0 $p 2>/dev/null
       done
    done
    if [ "$timeout" -eq 0 ] ; then
        failure "%s shutdown" $DAEMON
        kill -KILL $pid >/dev/null 2>&1
        RETVAL=1
    else
        success "%s shutdown" $base
        rm -f $LOCK
        RETVAL=0
    fi
    echo
    ;;
  hard-stop)
    gprintf "Fast stopping $DAEMON daemon: "
    #
    # no time to save state
    #
    killproc -d 1 $DAEMON
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $LOCK
    ;;
  status)
    status $DAEMON
    RETVAL=$?
    ;;
  restart|reload)
    $0 stop
    $0 start
    ;;
  condrestart)
    [ -f $LOCK ] && $0 restart || status $DAEMON
    ;;
  *)
    gprintf "Usage: %s {start|stop|smooth-stop|hard-stop|status|restart}\n" "$0"
    RETVAL=1
    ;;
esac

exit $RETVAL