[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Help with init script?



I'm trying to control a BitTorrent seed from an init script. The original init script (that I wrote) is in /etc/init.d/btseed. It starts and stops a script that is in /usr/local/bin/btseed. This script just starts btlaunchmany, which is used to seed multiple .torrents.

I couldn't get Debian Etch's btlaunchmany to work, so I installed the .deb for the current upstream BitTorrent that's found at http://download.bittorrent.com/dl/ When I run that version's btlaunchmany manually, it works fine.

My problem is that btlaunchmany forks a couple child processes. When I try to stop my daemon, my script itself exits but the child processes don't. I think I could fix this by putting a signal handler in my script that will kill the child processes, but I don't know how to do that. I'm also not sure of what would be the best way to identify the child process' process ID numbers. Perhaps ps | grep would do.

My btseed script takes no command line parameters. Here is the code to start the daemon from /etc/init.d/btseed:

d_start() {
        echo -n "$NAME"
        start-stop-daemon --start --background --quiet \
        --make-pidfile --pidfile "$PIDFILE" \
        --chuid nobody \
        --exec $DAEMON -- $DAEMONOPTS
}

Here is the code to stop it:

d_stop() {
start-stop-daemon --stop --oknodo --quiet --pidfile "$PIDFILE"
}

I have experimented with giving --signal to start-stop-daemon to try giving different signals to btseed, but nothing seemed to help.

Here is the btseed script:

#!/bin/sh

/usr/bin/btlaunchmany.py --max_upload_rate 128 \
 --save_in /var/bittorrent/torrentfiles \
 --torrent_dir /var/bittorrent/active \
 --minport 50000 \
 --maxport 51000 \
--data_dir /var/bittorrent/data | /bin/bzip2 > /var/bittorrent/logs/bt.log.bz2

The reason I didn't just run btlaunchmany.py directly from the init script is that I need to pipe its output through bzip2 and redirect it to a file. I wasn't clear on how I could do that from the start-stop-daemon command line.

Compressing the log is necessary because btlaunchmany.py's output is quite verbose, and will fill a filesystem quickly.

The nonstandard port numbers are an effort to work around ISPs who filter BitTorrent traffic. This doesn't always work, but probably does in some cases. The BitTorrent protocol itself handles the nonstandard port numbers without any trouble.

Thanks for any help you can give me.

Rippit
--
Rippit the Ogg Frog
rippit@oggfrog.com
http://www.oggfrog.com/

  Software isn't the only thing that should be free.
        Music should be too, as it once was.



Reply to: