Неделю бьюсь над этим решил уже форматнуть винт но думаю врдуг тут помогут? Спасибо!
s99rtorrent:
Code:#!/bin/sh
user="p2p"
prefix="/opt"
config="/opt/etc/rtorrent.conf"
options="-n -o import=/opt/etc/rtorrent.conf,http_cacert=/opt/etc/ssl/certs/cacert.pem"
base="/opt/share/torrent"
# name of screen session
srnname="rtorrent"
# file to log to (makes for easier debugging if something goes wrong)
logfile="/opt/var/log/rtorrentInit.log"
#######################
###END CONFIGURATION###
#######################
PATH=/opt/bin:/opt/sbin:/usr/bin:/sbin:/bin:/usr/sbin
DESC="rtorrent"
NAME=rtorrent
DAEMON=$NAME
SCRIPTNAME=/etc/init.d/$NAME
# Do not proceed unless some apps are available.
test -x /opt/bin/screen || ( echo "screen not found." | tee -a "$logfile" >&2 ; exit 2 )
test -x /opt/bin/su -o -x /bin/su || ( echo "su not found." | tee -a "$logfile" >&2 ; exit 2 )
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=`awk '/^[[:space:]]*session[[:space:]]*=[[:space:]]*/{print($3)}' "$config"`
<------>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

