diff --git a/shadowsocks-debian b/shadowsocks-debian index 06a3cf3..93409a4 100644 --- a/shadowsocks-debian +++ b/shadowsocks-debian @@ -11,94 +11,66 @@ # Author: Teddysun -NAME=shadowsocks -BIN=/usr/bin/ssserver -CONFIG_FILE=/etc/shadowsocks.json -PID_DIR=/var/run -PID_FILE=$PID_DIR/shadowsocks.pid -RET_VAL=0 +name=shadowsocks +BIN=/usr/local/bin/ssserver +conf=/etc/shadowsocks.json +#pid=/var/run/shadowsocks.pid -[ -x $BIN ] || exit 0 - -check_running() { - if [[ -r $PID_FILE ]]; then - read PID <$PID_FILE - if [[ -d "/proc/$PID" ]]; then - return 0 +start(){ + /usr/bin/ssserver -c $conf -d start + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + echo "$name start success" else - rm -f $PID_FILE - return 1 + echo "$name start failed" fi - else - return 2 - fi } -do_status() { - check_running - case $? in - 0) - echo "$NAME running with PID $PID" - ;; - 1) - echo "$NAME not running, remove PID file $PID_FILE" - ;; - 2) - echo "Could not find PID file $PID_FILE, $NAME does not appear to be running" - ;; - esac - return 0 +stop(){ + pid=`ps -ef | grep -v grep | grep -v ps | grep -i '/usr/bin/python /usr/bin/ssserver' | awk '{print $2}'` + if [ ! -z $pid ]; then + /usr/bin/ssserver -c $conf -d stop + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + echo "$name stop success" + else + echo "$name stop failed" + fi + else + echo "$name is not running" + RETVAL=1 + fi } -do_start() { - if [[ ! -d $PID_DIR ]]; then - mkdir $PID_DIR || echo "failed creating PID directory $PID_DIR"; exit 1 - fi - if check_running; then - echo "$NAME already running with PID $PID" - return 0 - fi - if [[ ! -r $CONFIG_FILE ]]; then - echo "config file $CONFIG_FILE not found" - return 1 - fi - echo "starting $NAME" - # sudo will set the group to the primary group of $USER - $BIN -c $CONFIG_FILE -d start - PID=$! - echo $PID > $PID_FILE - sleep 0.3 - if ! check_running; then - echo "start failed" - return 1 - fi - echo "$NAME running with PID $PID" - return 0 -} - -do_stop() { - if check_running; then - echo "stopping $NAME with PID $PID" - kill $PID - rm -f $PID_FILE - else - echo "Could not find PID file $PID_FILE" - fi -} - -do_restart() { - do_stop - do_start +status(){ + pid=`ps -ef | grep -v grep | grep -v ps | grep -i '/usr/bin/python /usr/bin/ssserver' | awk '{print $2}'` + if [ -z $pid ]; then + echo "$name is not running" + RETVAL=1 + else + echo "$name is running with PID $pid" + RETVAL=0 + fi } case "$1" in - start|stop|restart|status) - do_$1 +'start') + start ;; - *) - echo "Usage: shadowsocks {start|stop|restart|status}" - RET_VAL=1 +'stop') + stop + ;; +'status') + status + ;; +'restart') + stop + start + RETVAL=$? + ;; +*) + echo "Usage: $0 { start | stop | restart | status }" + RETVAL=1 ;; esac - -exit $RET_VAL \ No newline at end of file +exit $RETVAL \ No newline at end of file