init script for transmission bitTorrent client
FedoraForum.org - Fedora Support Forums and Community
Results 1 to 9 of 9
  1. #1
    Join Date
    Dec 2008
    Location
    Lepoglava, Croatia
    Age
    32
    Posts
    35
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question init script for transmission bitTorrent client

    I'm trying to get transmission to run on boot using init script transmission-daemon found on
    http://trac.transmissionbt.com/wiki/Scripts/initd

    This script is, unfortunately, created for debian-like systems.
    This script uses this part of code in start() for return values:
    Code:
    # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
                --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \
                || return 1
        start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
                --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \
                || return 2
    Can someone plz tell me how to write function 'start-stop-daemon' in Fedora (using /etc/init.d/function)?

  2. #2
    Join Date
    Dec 2008
    Location
    Lepoglava, Croatia
    Age
    32
    Posts
    35
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I managed to repair starting the service, but I'm getting an error on '/etc/init.d/transmission-daemon stop'

    My init file:
    Code:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          transmission-daemon
    # Required-Start:    networking
    # Required-Stop:     networking
    # Default-Start:     2 3 5
    # Default-Stop:      0 1 6
    # Short-Description: Start the transmission BitTorrent daemon client.
    ### END INIT INFO
    
    # Original Author: Lennart A. JŒtte, based on Rob Howell's script
    # Modified by Maarten Van Coile & others (on IRC)
    
    # Do NOT "set -e"
    
    #
    # ----- CONFIGURATION -----
    #
    # For the default location Transmission uses, visit:
    # http://trac.transmissionbt.com/wiki/ConfigFiles
    # For a guide on how set the preferences, visit:
    # http://trac.transmissionbt.com/wiki/EditConfigFiles
    # For the available environement variables, visit:
    # http://trac.transmissionbt.com/wiki/EnvironmentVariables
    #
    # The name of the user that should run Transmission.
    # It's RECOMENDED to run Transmission in it's own user,
    # by default, this is set to 'transmission'.
    # For the sake of security you shouldn't set a password
    # on this user
    USERNAME=transmission
    
    
    # ----- *ADVANCED* CONFIGURATION -----
    # Only change these options if you know what you are doing!
    #
    # The folder where Transmission stores the config & web files.
    # ONLY change this you have it at a non-default location
    #TRANSMISSION_HOME="/var/config/transmission-daemon"
    #TRANSMISSION_WEB_HOME="/usr/share/transmission/web"
    #
    # The arguments passed on to transmission-daemon.
    # ONLY change this you need to, otherwise use the
    # settings file as per above.
    #TRANSMISSION_ARGS=""
    
    
    # ----- END OF CONFIGURATION -----
    #
    # PATH should only include /usr/* if it runs after the mountnfs.sh script.
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    DESC="bittorrent client"
    NAME=transmission-daemon
    DAEMON=$(which $NAME)
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    
    # Load the VERBOSE setting and other rcS variables
    [ -f /etc/default/rcS ] && . /etc/default/rcS
    
    #
    # Function that starts the daemon/service
    #
    
    do_start()
    {
        # Export the configuration/web directory, if set
        if [ -n "$TRANSMISSION_HOME" ]; then
              export TRANSMISSION_HOME
        fi
        if [ -n "$TRANSMISSION_WEB_HOME" ]; then
              export TRANSMISSION_WEB_HOME
        fi
    
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        ##start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
        ##        --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \
        ##        || return 1
        ##start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
        ##        --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \
        ##        || return 2
        daemon --user=$USERNAME --pidfile=$PIDFILE --check $DAEMON > /dev/null #\	#
        RETVAL="$?"
        [ "$RETVAL" = 1 ] && return 1
            #|| return 1								#
        daemon --user=$USERNAME --pidfile=$PIDFILE $DAEMON #\			#
        RETVAL="$?"
        [ "$RETVAL" = 1 ] && return 1
            #|| 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/10/KILL/5 --pidfile $PIDFILE --name $NAME
    	killproc -d=10 $NAME
            RETVAL="$?"
            [ "$RETVAL" = 2 ] && return 2
    
            # Wait for children to finish too if this is a daemon that forks
            # and if the daemon is only ever run from this initscript.
            # If the above conditions are not satisfied then add some other code
            # that waits for the process to drop all resources that could be
            # needed by services started subsequently.  A last resort is to
            # sleep for some time.
    
            ##start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    	killproc -d=30 $NAME
            [ "$?" = 2 ] && return 2
    
            # Many daemons don't delete their pidfiles when they exit.
            rm -f $PIDFILE
    
            return "$RETVAL"
    }
    
    case "$1" in
      start)
            echo "Starting $DESC" "$NAME..."
            do_start
            case "$?" in
                    0|1) echo "   Starting $DESC $NAME succeeded" ;;
                    *)   echo "   Starting $DESC $NAME failed" ;;
            esac
            ;;
      stop)
            echo "Stopping $DESC $NAME..."
            do_stop
            case "$?" in
                    0|1) echo "   Stopping $DESC $NAME succeeded" ;;
                    *)   echo "   Stopping $DESC $NAME failed" ;;
            esac
            ;;
      restart|force-reload)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            echo "Restarting $DESC $NAME..."
            do_stop
            case "$?" in
              0|1)
                    do_start
                    case "$?" in
                        0|1) echo "   Restarting $DESC $NAME succeeded" ;;
                        *)   echo "   Restarting $DESC $NAME failed: couldn't start $NAME" ;;
                    esac
                    ;;
              *)
                    echo "   Restarting $DESC $NAME failed: couldn't stop $NAME" ;;
            esac
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;
    esac
    Output is:
    Code:
    Stopping bittorrent client transmission-daemon...
    pidof: invalid options on command line!
    
    pidof: invalid options on command line!
    
    pidof: invalid options on command line!                    [NEUSPJELO]
    
    pidof: invalid options on command line!
    
       Stopping bittorrent client transmission-daemon succeeded[NEUSPJELO]
    (NEUSPJELO=FAILED in Croatian )
    Last edited by shumi; 23rd April 2009 at 04:13 PM.

  3. #3
    Join Date
    Dec 2008
    Location
    Lepoglava, Croatia
    Age
    32
    Posts
    35
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I think that I fount where the problem is:

    when I enter into command line:
    Code:
    ps -e | grep trans
    I get
    Code:
    10491 ?        00:00:00 transmission-da
    ... so it seams 'transmission-daemon' is too long to be a name of service.

    Can someone plz tell me some elegant way to solve this?

  4. #4
    Join Date
    Feb 2008
    Posts
    656
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    when do you want to run transmission?

    during boot before you login? or after you login?

    why do you want to run transmission before you login to your account?
    c_d -- superfluously plenteous yet indolently otiose

  5. #5
    Join Date
    Dec 2008
    Location
    Lepoglava, Croatia
    Age
    32
    Posts
    35
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I want to be able to run it before anyone login, so I can control my downloads from work, when nobody is at home.
    Of course, it needs to be running even when I'm not near any computer.

    This way of using transmission is not rare, I know a few people who use it that way, but they use Ubuntu

  6. #6
    Join Date
    Apr 2007
    Location
    Philadelphia, PA
    Age
    35
    Posts
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't know if you have got this working yet , but i have been using transmission for a while like this here is my init , its a little corse and i had to run it as root to get it working , but it does work.

    Code:
    #!/bin/bash
    #
    # chkconfig: - 16 84
    # description: Start up transmission-daemon
    #
    # processname: transmission-daemon
    # config: /etc/sysconfig/transmission
    
    # source function library
    . /etc/rc.d/init.d/functions
    
    # Get network config
    #. /etc/sysconfig/network
    
    # Check that networking is up.
    [ "${NETWORKING}" = "no" ] && exit 0
    
    USERNAME=root
    LOGFILE=/var/log/transmission
    
    # ----- *ADVANCED* CONFIGURATION -----
    # Only change these options if you know what you are doing!
    #
    # The folder where Transmission stores the config & web files.
    # ONLY change this you have it at a non-default location
    #TRANSMISSION_HOME="/var/config/transmission-daemon"
    #TRANSMISSION_WEB_HOME="/usr/share/transmission/web"
    #
    # The arguments passed on to transmission-daemon.
    # ONLY change this you need to, otherwise use the
    # settings file as per above.
    TRANSMISSION_ARGS="-T --blocklist -g /etc/sysconfig/transmission/"
    
    NAME=transmission-daemon
    DAEMON=$(which $NAME)
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    
    [ -x "$DAEMON" ] || exit 0
    
    do_start()
    {
        # Export the configuration/web directory, if set
        if [ -n "$TRANSMISSION_HOME" ]; then
              export TRANSMISSION_HOME
        fi
        if [ -n "$TRANSMISSION_WEB_HOME" ]; then
              export TRANSMISSION_WEB_HOME
        fi
    
        echo -n $"Starting transmission-daemon: "
        /sbin/runuser -s /bin/sh -c "$DAEMON $TRANSMISSION_ARGS" $USERNAME >> $LOGFILE & 
        disown -ar
        /bin/usleep 500000
        status $NAME  &> /dev/null && echo_success || echo_failure
        RETVAL=$?
    
        if [ $RETVAL -eq 0 ]; then
          /bin/touch /var/lock/subsys/transmission
          /sbin/pidof -o %PPID -x $NAME > /var/run/transmission.pid
        fi
        echo
    }
    
    do_stop()
    {
            echo -n $"Shutting down transmission: "
    	killproc $NAME
            RETVAL=$?
    	[ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/transmission /var/run/transmission.pid
    	echo
    }
    
    
    case "$1" in
      start)
            echo "Starting $DESC" "$NAME..."
            do_start
            ;;
      stop)
            echo "Stopping $DESC $NAME..."
            do_stop
            ;;
      restart)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            echo "Restarting $DESC $NAME..."
            do_stop
            do_start
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;

  7. #7
    Join Date
    Sep 2005
    Posts
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by tekel
    Code:
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;
    esac
    For noobs, there is a missing esac on the last line...

    Otherwise it works for me (although I did have to modify the config slightly).

  8. #8
    Join Date
    Apr 2007
    Location
    Philadelphia, PA
    Age
    35
    Posts
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by squeegee
    For noobs, there is a missing esac on the last line...

    Otherwise it works for me (although I did have to modify the config slightly).
    Thanks for the correction , to tell you the truth I copied and frankensteined that script from others in my init.d folder ( I think i used the tomcat script as a base ). I don't know if it is the start-up script or my set up but currently transmission is really flaky. It stops seeding after about a day and requires me to go in and restart the service. Anyone else have this problem ?

  9. #9
    Join Date
    Sep 2005
    Posts
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by tekel
    It stops seeding after about a day and requires me to go in and restart the service. Anyone else have this problem ?
    Working good for me. In looking at the threads on transmissionbt.com, I see that there are issues with 1.61, and a few with slightly earlier versions as well. May be worth a peruse...

Similar Threads

  1. Pidgin/Transmission Bittorrent Client
    By gatorcc in forum Using Fedora
    Replies: 1
    Last Post: 10th October 2009, 08:20 PM
  2. Replies: 1
    Last Post: 3rd May 2009, 11:28 AM
  3. Transmission... or any Torrent client?
    By Daniel114 in forum Using Fedora
    Replies: 8
    Last Post: 21st December 2007, 11:44 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •