Advertisement
eta4ever

/etc/init.d/octoprint

Sep 13th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides: octoprint
  5. # Required-Start: $local_fs networking
  6. # Required-Stop:
  7. # Should-Start:
  8. # Should-Stop:
  9. # Default-Start: 2 3 4 5
  10. # Default-Stop: 0 1 6
  11. # Short-Description: OctoPrint daemon
  12. # Description: Starts the OctoPrint daemon with the user specified in
  13. # /etc/default/octoprint.
  14. ### END INIT INFO
  15.  
  16. # Author: Sami Olmari & Gina Häußge
  17.  
  18. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  19. DESC="OctoPrint Daemon"
  20. NAME="OctoPrint"
  21. PKGNAME=octoprint
  22. PIDFILE=/var/run/$PKGNAME.pid
  23. SCRIPTNAME=/etc/init.d/$PKGNAME
  24. DEFAULTS=/etc/default/$PKGNAME
  25.  
  26. # Read configuration variable file if it is present
  27. [ -r $DEFAULTS ] && . $DEFAULTS
  28.  
  29. # Define LSB log_* functions.
  30. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
  31. . /lib/lsb/init-functions
  32.  
  33. # Exit if the DAEMON is not set
  34. if [ -z "$DAEMON" ]
  35. then
  36. log_warning_msg "Not starting $PKGNAME, DAEMON not set in /etc/default/$PKGNAME."
  37. exit 0
  38. fi
  39.  
  40. # Exit if the DAEMON is not installed
  41. [ -x "$DAEMON" ] || exit 0
  42.  
  43. # Load the VERBOSE setting and other rcS variables
  44. [ -f /etc/default/rcS ] && . /etc/default/rcS
  45.  
  46. if [ -z "$START" -o "$START" != "yes" ]
  47. then
  48. log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
  49. exit 0
  50. fi
  51.  
  52. if [ -z "$OCTOPRINT_USER" ]
  53. then
  54. log_warning_msg "Not starting $PKGNAME, OCTOPRINT_USER not set in /etc/default/$PKGNAME."
  55. exit 0
  56. fi
  57.  
  58. COMMAND_ARGS=
  59. if [ -n "$BASEDIR" ]
  60. then
  61. COMMAND_ARGS="--basedir $BASEDIR $COMMAND_ARGS"
  62. fi
  63.  
  64. if [ -n "$CONFIGFILE" ]
  65. then
  66. COMMAND_ARGS="--config $CONFIGFILE $COMMAND_ARGS"
  67. fi
  68.  
  69. #
  70. # Function to verify if a pid is alive
  71. #
  72. is_alive()
  73. {
  74. pid=`cat $1` > /dev/null 2>&1
  75. kill -0 $pid > /dev/null 2>&1
  76. return $?
  77. }
  78.  
  79. #
  80. # Function that starts the daemon/service
  81. #
  82. do_start()
  83. {
  84. # Return
  85. # 0 if daemon has been started
  86. # 1 if daemon was already running
  87. # 2 if daemon could not be started
  88.  
  89. is_alive $PIDFILE
  90. RETVAL="$?"
  91.  
  92. if [ $RETVAL != 0 ]; then
  93. start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
  94. --exec $DAEMON --chuid $OCTOPRINT_USER --user $OCTOPRINT_USER --umask $UMASK --nicelevel=$NICELEVEL \
  95. -- serve $COMMAND_ARGS $DAEMON_ARGS
  96. RETVAL="$?"
  97. fi
  98. }
  99.  
  100. #
  101. # Function that stops the daemon/service
  102. #
  103. do_stop()
  104. {
  105. # Return
  106. # 0 if daemon has been stopped
  107. # 1 if daemon was already stopped
  108. # 2 if daemon could not be stopped
  109. # other if a failure occurred
  110.  
  111. start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $OCTOPRINT_USER --pidfile $PIDFILE
  112. RETVAL="$?"
  113. [ "$RETVAL" = "2" ] && return 2
  114.  
  115. rm -f $PIDFILE
  116.  
  117. [ "$RETVAL" = "0" ] && return 0 || return 1
  118. }
  119.  
  120. case "$1" in
  121. start)
  122. [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
  123. do_start
  124. case "$?" in
  125. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  126. 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  127. esac
  128. ;;
  129. stop)
  130. [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
  131. do_stop
  132. case "$?" in
  133. 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  134. 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  135. esac
  136. ;;
  137. status)
  138. status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
  139. ;;
  140. restart)
  141. log_daemon_msg "Restarting $DESC" "$NAME"
  142. do_stop
  143. case "$?" in
  144. 0|1)
  145. do_start
  146. case "$?" in
  147. 0) log_end_msg 0 ;;
  148. 1) log_end_msg 1 ;; # Old process is still running
  149. *) log_end_msg 1 ;; # Failed to start
  150. esac
  151. ;;
  152. *)
  153. # Failed to stop
  154. log_end_msg 1
  155. ;;
  156. esac
  157. ;;
  158. *)
  159. echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
  160. exit 3
  161. ;;
  162. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement