Update Auto start script

This commit is contained in:
Teddysun 2015-03-09 18:53:52 +08:00
parent 6a61f8b1c8
commit 3a6c8841a6

View File

@ -1,115 +1,109 @@
#!/bin/bash #!/bin/bash
# #
# Script to run Shadowsocks in daemon mode at boot time. # Script to run Shadowsocks in daemon mode at boot time.
# Revision 1.0
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: shadowsocks # Provides: shadowsocks-libev
# Required-Start: # Required-Start: $network $local_fs $remote_fs
# Required-Stop: # Required-Stop: $remote_fs
# Should-Start: # Should-Start:
# Should-Stop: # Should-Stop:
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: shadowsocks is a lightweight tunneling proxy # Short-Description: shadowsocks-libev is a lightweight tunneling proxy
### END INIT INFO ### END INIT INFO
# Author: Teddysun <i@teddysun.com>
# Daemon # Daemon
NAME=shadowsocks-server NAME=shadowsocks-libev
DAEMON=/usr/local/bin/ss-server BIN=/usr/local/bin/ss-server
CONFIG_FILE=/etc/shadowsocks-libev/config.json
PID_DIR=/var/run/$NAME
PID_FILE=$PID_DIR/pid
RET_VAL=0
# Path to the configuration file. [ -x $BIN ] || exit 0
#
CONF=/etc/shadowsocks-libev/config.json
#USER="nobody" check_running() {
#GROUP="nobody" if [[ -r $PID_FILE ]]; then
read PID <$PID_FILE
# Take care of pidfile permissions if [[ -d "/proc/$PID" ]]; then
mkdir /var/run/$NAME 2>/dev/null || true return 0
#chown "$USER:$GROUP" /var/run/$NAME else
rm -f $PID_FILE
# Check the configuration file exists. return 1
# fi
if [ ! -f $CONF ] ; then else
echo "The configuration file cannot be found!" return 2
exit 0 fi
fi
# Path to the lock file.
#
LOCK_FILE=/var/lock/subsys/shadowsocks
# Path to the pid file.
#
PID=/var/run/$NAME/pid
#====================================================================
#====================================================================
# Run controls:
RETVAL=0
# Start shadowsocks as daemon.
#
start() {
if [ -f $LOCK_FILE ]; then
echo "$NAME is already running!"
exit 0
else
echo -n $"Starting ${NAME}: "
#daemon --check $DAEMON --user $USER "$DAEMON -f $PID -c $CONF > /dev/null"
daemon $DAEMON -u -c $CONF -f $PID
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success
echo
[ $RETVAL -eq 0 ] && touch $LOCK_FILE
return $RETVAL
} }
do_status() {
# Stop shadowsocks. check_running
# case $? in
stop() { 0)
echo -n $"Shutting down ${NAME}: " echo "$NAME running with PID $PID"
killproc -p ${PID} ;;
RETVAL=$? 1)
[ $RETVAL -eq 0 ] echo "$NAME not running, remove PID file $PID_FILE"
rm -f $LOCK_FILE ;;
rm -f ${PID} 2)
echo echo "Could not find PID file $PID_FILE, $NAME does not appear to be running"
return $RETVAL ;;
esac
return 0
}
do_start() {
if [[ ! -d $PID_DIR ]]; then
mkdir -p $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 &
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
} }
# See how we were called.
case "$1" in case "$1" in
start) start|stop|restart|status)
start do_$1
;; ;;
stop) *)
stop echo "Usage: shadowsocks {start|stop|restart|status}"
;; RET_VAL=1
restart) ;;
stop
start
;;
condrestart)
if [ -f $LOCK_FILE ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $DAEMON
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac esac
exit $RETVAL exit $RET_VAL