init.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: grafana
  4. # Required-Start: $local_fs $remote_fs $network
  5. # Required-Stop: $local_fs $remote_fs $network
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Starts grafana at startup
  9. # Description: Starts grafana at startup
  10. ### END INIT INFO
  11. # Documentation available at
  12. # http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
  13. # Debian provides some extra functions though
  14. . /lib/lsb/init-functions
  15. DAEMON_NAME="grafana"
  16. DAEMON_USER="grafana"
  17. DAEMON_PATH="/opt/grafana/current/grafana"
  18. DAEMON_OPTS="--config=/etc/opt/grafana/grafana.ini web"
  19. DAEMON_PWD="/opt/grafana/current"
  20. DAEMON_PID="/var/run/${DAEMON_NAME}.pid"
  21. DAEMON_NICE=0
  22. DAEMON_LOG='/var/log/grafana/grafana.log'
  23. [ -r "/etc/default/${DAEMON_NAME}" ] && . "/etc/default/${DAEMON_NAME}"
  24. do_start() {
  25. local result
  26. pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
  27. if [ $? -eq 0 ]; then
  28. log_warning_msg "${DAEMON_NAME} is already started"
  29. result=0
  30. else
  31. log_daemon_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"
  32. touch "${DAEMON_LOG}"
  33. chown $DAEMON_USER "${DAEMON_LOG}"
  34. chmod u+rw "${DAEMON_LOG}"
  35. if [ -z "${DAEMON_USER}" ]; then
  36. start-stop-daemon --start --quiet --oknodo --background \
  37. --nicelevel $DAEMON_NICE \
  38. --chdir "${DAEMON_PWD}" \
  39. --pidfile "${DAEMON_PID}" --make-pidfile \
  40. --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
  41. result=$?
  42. else
  43. start-stop-daemon --start --quiet --oknodo --background \
  44. --nicelevel $DAEMON_NICE \
  45. --chdir "${DAEMON_PWD}" \
  46. --pidfile "${DAEMON_PID}" --make-pidfile \
  47. --chuid "${DAEMON_USER}" \
  48. --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
  49. result=$?
  50. fi
  51. log_end_msg $result
  52. fi
  53. return $result
  54. }
  55. do_stop() {
  56. local result
  57. pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
  58. if [ $? -ne 0 ]; then
  59. log_warning_msg "${DAEMON_NAME} is not started"
  60. result=0
  61. else
  62. log_daemon_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"
  63. killproc -p "${DAEMON_PID}" "${DAEMON_PATH}"
  64. result=$?
  65. log_end_msg $result
  66. rm "${DAEMON_PID}"
  67. fi
  68. return $result
  69. }
  70. do_restart() {
  71. local result
  72. do_stop
  73. result=$?
  74. if [ $result = 0 ]; then
  75. do_start
  76. result=$?
  77. fi
  78. return $result
  79. }
  80. do_status() {
  81. local result
  82. status_of_proc -p "${DAEMON_PID}" "${DAEMON_PATH}" "${DAEMON_NAME}"
  83. result=$?
  84. return $result
  85. }
  86. do_usage() {
  87. echo $"Usage: $0 {start | stop | restart | status}"
  88. exit 1
  89. }
  90. case "$1" in
  91. start) do_start; exit $? ;;
  92. stop) do_stop; exit $? ;;
  93. restart) do_restart; exit $? ;;
  94. status) do_status; exit $? ;;
  95. *) do_usage; exit 1 ;;
  96. esac