rc.hhvm 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #!/bin/sh
  2. #
  3. ### BEGIN INIT INFO
  4. # Provides: hhvm
  5. # Required-Start: $remote_fs $network
  6. # Required-Stop: $remote_fs $network
  7. # Default-Start: 2 3 4 5
  8. # Default-Stop: 0 1 6
  9. # Description: Starts the HHVM daemon
  10. ### END INIT INFO
  11. DAEMON=/usr/bin/hhvm
  12. PIDFILE=/var/run/hhvm/pid
  13. hhvm_SOCKET=/var/run/hhvm/sock
  14. hhvm_GROUP=${hhvm_GROUP:-apache}
  15. CONFIG_FILE="/etc/hhvm/server.ini"
  16. SYSTEM_CONFIG_FILE="/etc/hhvm/php.ini"
  17. DAEMON_ARGS="--config ${SYSTEM_CONFIG_FILE} \
  18. --config ${CONFIG_FILE} \
  19. -vPidFile=${PIDFILE}"
  20. do_stop () {
  21. try=0
  22. if [ ! -r $2 ]; then
  23. echo "warning, no pid file found - HHVM is not running?"
  24. exit 1
  25. fi
  26. PID=`cat $2`
  27. kill $1 $PID
  28. # Waiting for HHVM to shutdown
  29. while test $try -lt 35
  30. do
  31. if ps -p $PID | grep -q $PID
  32. then
  33. echo -n .
  34. try=`expr $try + 1`
  35. sleep 1
  36. else
  37. try=''
  38. break
  39. fi
  40. done
  41. if [ -n "$try" ]
  42. then
  43. echo " failed. Use force-quit"
  44. exit 1
  45. else
  46. rm -f $2
  47. echo " done"
  48. fi
  49. }
  50. wait_for_pid () {
  51. try=0
  52. while test $try -lt 35
  53. do
  54. if [ -f "$1" ] ; then
  55. try=''
  56. break
  57. fi
  58. echo -n .
  59. try=`expr $try + 1`
  60. sleep 1
  61. done
  62. }
  63. case "$1" in
  64. start)
  65. echo -n "Starting HHVM "
  66. if [ -r $PIDFILE ]; then
  67. echo "warning, pid file found - HHVM is already running?"
  68. exit 1
  69. fi
  70. echo
  71. $DAEMON --mode daemon $DAEMON_ARGS
  72. if [ "$?" != 0 ]
  73. then
  74. echo "Failed"
  75. exit 1
  76. fi
  77. mkdir -p `dirname $PIDFILE`
  78. wait_for_pid $PIDFILE
  79. if [ -n "$try" ] ; then
  80. echo " failed"
  81. exit 1
  82. fi
  83. # Set the socket permissions if HHVM uses UDS
  84. if [ -S "$hhvm_SOCKET" ]
  85. then
  86. chgrp $hhvm_GROUP $hhvm_SOCKET
  87. fi
  88. echo " done"
  89. ;;
  90. stop)
  91. echo -n "Stopping HHVM "
  92. do_stop -QUIT $PIDFILE
  93. ;;
  94. force-quit)
  95. echo -n "Terminating HHVM "
  96. do_stop -TERM $PIDFILE
  97. ;;
  98. status)
  99. if [ ! -r $PIDFILE ]
  100. then
  101. echo "HHVM is stopped"
  102. exit 0
  103. fi
  104. PID=`cat $PIDFILE`
  105. if ps -p $PID | grep -q $PID
  106. then
  107. echo "HHVM (pid $PID) is running..."
  108. else
  109. echo "HHVM dead but pid file exists"
  110. fi
  111. ;;
  112. restart)
  113. sh $0 stop
  114. sh $0 start
  115. ;;
  116. reload)
  117. echo -n "Reload service HHVM "
  118. if [ ! -r $PIDFILE ]
  119. then
  120. echo "warning, no pid file found - HHVM is not running?"
  121. exit 1
  122. fi
  123. kill -USR2 `cat $PIDFILE`
  124. echo " done"
  125. ;;
  126. *)
  127. echo "Usage: $0 {start|stop|status|restart|reload|force-quit}" >&2
  128. exit 1
  129. ;;
  130. esac