kms-debian 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. ### BEGIN INIT INFO
  3. # Provides: KMS Emulator
  4. # Required-Start: $network $local_fs $remote_fs
  5. # Required-Stop: $network $local_fs $remote_fs
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Build yourself KMS Server
  9. # Description: Start or stop the KMS Server
  10. ### END INIT INFO
  11. # Author: Teddysun <[email protected]>
  12. NAME="KMS Server"
  13. DAEMON=/usr/bin/vlmcsd
  14. PID_DIR=/var/run
  15. PID_FILE=$PID_DIR/vlmcsd.pid
  16. LOG_DIR=/var/log
  17. LOG_FILE=$LOG_DIR/vlmcsd.log
  18. RET_VAL=0
  19. [ -x $DAEMON ] || exit 0
  20. if [ ! -d $PID_DIR ]; then
  21. mkdir -p $PID_DIR
  22. if [ $? -ne 0 ]; then
  23. echo "Creating PID directory $PID_DIR failed"
  24. exit 1
  25. fi
  26. fi
  27. if [ ! -d $LOG_DIR ]; then
  28. mkdir -p $LOG_DIR
  29. if [ $? -ne 0 ]; then
  30. echo "Creating LOG directory $LOG_DIR failed"
  31. exit 1
  32. fi
  33. fi
  34. check_running() {
  35. if [ -r $PID_FILE ]; then
  36. read PID < $PID_FILE
  37. if [ -d "/proc/$PID" ]; then
  38. return 0
  39. else
  40. rm -f $PID_FILE
  41. return 1
  42. fi
  43. else
  44. return 2
  45. fi
  46. }
  47. do_status() {
  48. check_running
  49. case $? in
  50. 0)
  51. echo "$NAME (pid $PID) is running..."
  52. ;;
  53. 1|2)
  54. echo "$NAME is stopped"
  55. RET_VAL=1
  56. ;;
  57. esac
  58. }
  59. do_start() {
  60. if check_running; then
  61. echo "$NAME (pid $PID) is already running..."
  62. return 0
  63. fi
  64. $DAEMON -p $PID_FILE -l $LOG_FILE
  65. sleep 0.3
  66. if check_running; then
  67. echo "Starting $NAME success"
  68. else
  69. echo "Starting $NAME failed"
  70. RET_VAL=1
  71. fi
  72. }
  73. do_stop() {
  74. if check_running; then
  75. kill -9 $PID
  76. rm -f $PID_FILE
  77. echo "Stopping $NAME success"
  78. else
  79. echo "$NAME is stopped"
  80. RET_VAL=1
  81. fi
  82. }
  83. do_restart() {
  84. do_stop
  85. do_start
  86. }
  87. case "$1" in
  88. start|stop|restart|status)
  89. do_$1
  90. ;;
  91. *)
  92. echo "Usage: $0 { start | stop | restart | status }"
  93. RET_VAL=1
  94. ;;
  95. esac
  96. exit $RET_VAL