Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- base=`echo $HOME`
- user=`whoami`
- config="${base}/.rtorrent.rc"
- gconfig="/etc/rtorrent/rtorrent.rc"
- options="-o import=${gconfig}"
- scrnname="torrent"
- DESC="rtorrent"
- NAME=`which rtorrent`
- DAEMON="${NAME}"
- getsession() {
- session=`cat "$1" | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//" `
- session=`echo ${session} | sed 's|~|'$2'|g'`
- echo $session
- }
- getsocket() {
- socket=`cat "$1" | grep "^[[:space:]]*scgi_local[[:space:]]*=" | sed "s/^[[:space:]]*scgi_local[[:space:]]*=[[:space:]]*//" `
- socket=`echo ${socket} | sed 's|~|'$2'|g'`
- echo $socket
- }
- checkconfig() {
- if ! [ -r "${config}" ] ; then
- eerror "cannot find readable config ${config}. check that it is there and permissions are appropriate"
- return 2
- fi
- if ! [ -r "${gconfig}" ] ; then
- eerror "cannot find readable config ${gconfig}. check that it is there and permissions are appropriate"
- return 3
- fi
- session=`getsession "$gconfig" "$base"`
- if ! [ -d "${session}" ] ; then
- eerror "cannot find readable session directory ${session} from config ${configg}. check permissions"
- return 4
- fi
- }
- checkrunning() {
- session=`getsession "$gconfig" "$base"`
- if [ -s "${session}/rtorrent.lock" ] ; then
- pid=`cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
- if ps -A | grep -sq "${pid}.*rtorrent" ; then
- echo "rTorrent's already running"
- return 1
- else
- echo "lock file has been found, but rTorrent's not running...deleting lock file"
- fi
- fi
- }
- d_start() {
- checkconfig || return 1
- checkrunning || return 1
- socket=`getsocket "$gconfig" "$base"`
- if [ -S ${socket} ] ; then
- echo "SCGI socket has been found, but rTorrent's not running...deleting socket file"
- rm ${socket}
- fi
- screen -ls | grep -sq "\.${scrnname}[[:space:]]" || screen -dm -S ${scrnname} 2>&1 1>/dev/null
- screen -S "${scrnname}" -X screen ${DAEMON} ${options} 2>&1 1>/dev/null
- }
- d_stop() {
- session=`getsession "$gconfig" "$base"`
- 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
- }
- case "$1" in
- start)
- echo -n "Starting $DESC for user: $user"
- d_start
- echo "."
- ;;
- stop)
- echo -n "Stopping $DESC for user: $user"
- d_stop
- echo "."
- ;;
- restart|force-reload)
- echo -n "Restarting $DESC for user: $user"
- d_stop
- for (( i = 0 ; i <= 10; i++ )) ; do
- sleep 1
- echo -n "."
- done
- d_start
- echo "."
- ;;
- *)
- exit 1
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement