123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/bin/bash
- ### BEGIN INIT INFO
- # Provides: KMS Emulator
- # Required-Start: $network $local_fs $remote_fs
- # Required-Stop: $network $local_fs $remote_fs
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: Build yourself KMS Server
- # Description: Start or stop the KMS Server
- ### END INIT INFO
- # Author: Teddysun <[email protected]>
- NAME="KMS Server"
- DAEMON=/usr/bin/vlmcsd
- PID_DIR=/var/run
- PID_FILE=$PID_DIR/vlmcsd.pid
- LOG_DIR=/var/log
- LOG_FILE=$LOG_DIR/vlmcsd.log
- RET_VAL=0
- [ -x $DAEMON ] || exit 0
- if [ ! -d $PID_DIR ]; then
- mkdir -p $PID_DIR
- if [ $? -ne 0 ]; then
- echo "Creating PID directory $PID_DIR failed"
- exit 1
- fi
- fi
- if [ ! -d $LOG_DIR ]; then
- mkdir -p $LOG_DIR
- if [ $? -ne 0 ]; then
- echo "Creating LOG directory $LOG_DIR failed"
- exit 1
- fi
- fi
- check_running() {
- if [ -r $PID_FILE ]; then
- read PID < $PID_FILE
- if [ -d "/proc/$PID" ]; then
- return 0
- else
- rm -f $PID_FILE
- return 1
- fi
- else
- return 2
- fi
- }
- do_status() {
- check_running
- case $? in
- 0)
- echo "$NAME (pid $PID) is running..."
- ;;
- 1|2)
- echo "$NAME is stopped"
- RET_VAL=1
- ;;
- esac
- }
- do_start() {
- if check_running; then
- echo "$NAME (pid $PID) is already running..."
- return 0
- fi
- $DAEMON -p $PID_FILE -l $LOG_FILE
- sleep 0.3
- if check_running; then
- echo "Starting $NAME success"
- else
- echo "Starting $NAME failed"
- RET_VAL=1
- fi
- }
- do_stop() {
- if check_running; then
- kill -9 $PID
- rm -f $PID_FILE
- echo "Stopping $NAME success"
- else
- echo "$NAME is stopped"
- RET_VAL=1
- fi
- }
- do_restart() {
- do_stop
- do_start
- }
- case "$1" in
- start|stop|restart|status)
- do_$1
- ;;
- *)
- echo "Usage: $0 { start | stop | restart | status }"
- RET_VAL=1
- ;;
- esac
- exit $RET_VAL
|