Created
December 30, 2013 18:37
-
-
Save foosel/8185988 to your computer and use it in GitHub Desktop.
MJPG-Streamer init/default scripts by Sami Olmari (mirrored from http://pastebin.com/Eu5Cytk1 and http://pastebin.com/QCtC1sLc)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Configuration for /etc/init.d/mjpg-streamer | |
# The init.d script will only run if this variable non-empty. | |
MJPG_STREAMER_USER="pi" | |
# Where mjpg-streamer is installed, this is important! | |
DAEMON_HOME=/home/pi/mjpg-streamer | |
# What arguments to pass to mjpg-streamer, here is few examples; You can change them by commenting one and | |
# uncommenting another: | |
DAEMON_ARGS='-i "$DAEMON_HOME/input_uvc.so -r SXGA -f 15" -o "$DAEMON_HOME/output_http.so"' # UVC-mode | |
# DAEMON_ARGS='-i "$DAEMON_HOME/input_uvc.so -y" -o "$DAEMON_HOME/output_http.so"' # YUV-mode | |
# Umask of files mjpg-streamer generates, Change this to 000 if running mjpg-streamer as its own, separate user | |
UMASK=022 | |
# Should we run at startup? | |
RUN_AT_STARTUP="YES" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: mjpg-streamer | |
# Required-Start: $local_fs networking | |
# Required-Stop: | |
# Should-Start: | |
# Should-Stop: | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: mjpg-streamer daemon | |
# Description: Starts the mjpg-streamer daemon with the user specified in | |
# /etc/default/mjpg-streamer. | |
### END INIT INFO | |
# Author: Sami Olmari | |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | |
DESC="mjpg-streamer Daemon" | |
NAME="mjpg-streamer" | |
DAEMON=mjpg-streamer | |
PIDFILE=/var/run/$NAME.pid | |
PKGNAME=mjpg-streamer | |
SCRIPTNAME=/etc/init.d/$PKGNAME | |
# Read configuration variable file if it is present | |
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME | |
# Exit if the mjpg-streamer is not installed | |
[ -x "$DAEMON_HOME/$DAEMON" ] || exit 0 | |
# Load the VERBOSE setting and other rcS variables | |
[ -f /etc/default/rcS ] && . /etc/default/rcS | |
# Define LSB log_* functions. | |
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | |
. /lib/lsb/init-functions | |
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ] | |
then | |
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it." | |
exit 0 | |
fi | |
if [ -z "$MJPG_STREAMER_USER" ] | |
then | |
log_warning_msg "Not starting $PKGNAME, MJPG_STREAMER_USER not set in /etc/default/$PKGNAME." | |
exit 0 | |
fi | |
# | |
# Function to verify if a pid is alive | |
# | |
is_alive() | |
{ | |
pid=`cat $1` > /dev/null 2>&1 | |
kill -0 $pid > /dev/null 2>&1 | |
return $? | |
} | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
is_alive $PIDFILE | |
RETVAL="$?" | |
if [ $RETVAL != 0 ]; then | |
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \ | |
--exec $DAEMON_HOME/$DAEMON --chuid $MJPG_STREAMER_USER --user $MJPG_STREAMER_USER --umask $UMASK -- $DAEMON_ARGS | |
RETVAL="$?" | |
fi | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() | |
{ | |
# Return | |
# 0 if daemon has been stopped | |
# 1 if daemon was already stopped | |
# 2 if daemon could not be stopped | |
# other if a failure occurred | |
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $MJPG_STREAMER_USER --pidfile $PIDFILE | |
RETVAL="$?" | |
[ "$RETVAL" = "2" ] && return 2 | |
rm -f $PIDFILE | |
[ "$RETVAL" = "0" ] && return 0 || return 1 | |
} | |
case "$1" in | |
start) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | |
do_start | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
restart) | |
log_daemon_msg "Restarting $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; # Old process is still running | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
*) | |
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 | |
exit 3 | |
;; | |
esac | |
: |
I needed to change the quotes in the default file DAEMON_ARGS line to get this to work i.e.:
DAEMON_ARGS="-i $DAEMON_HOME/input_uvc.so -r SXGA -f 15 -o $DAEMON_HOME/output_http.so" # UVC-mode
# DAEMON_ARGS="-i $DAEMON_HOME/input_uvc.so -y -o $DAEMON_HOME/output_http.so" # YUV-mode
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
pi@octoprint /tmp $ wget https://gist.github.com/foosel/8185988/download
pi@octoprint /tmp $ tar -zxvf download
gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/
gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.default
gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.init
pi@octoprint /tmp $ less gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.init
pi@octoprint /tmp $ cp gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.init /etc/init.d/
cp: cannot create regular file `/etc/init.d/mjpg-streamer.init': Permission denied
pi@octoprint /tmp $ sudo cp gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.init /etc/init.d/
pi@octoprint /tmp $ sudo cp gist8185988-162d9f364735b4b9585cb33a58a6e619591bdeb8/mjpg-streamer.default /etc/default/
pi@octoprint /tmp $ sudo update-rc.d mjpg-streamer defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d/mjpg-streamer
pi@octoprint /tmp $ sudo mv /etc/init.d/mjpg-streamer.init /etc/init.d/mjpg-streamer
pi@octoprint /tmp $ suod me /etc/default/mjpg-streamer.default /etc/default/mjpg-streamer
-bash: suod: command not found
pi@octoprint /tmp $ sudo mv /etc/default/mjpg-streamer.default /etc/default/mjpg-streamer
pi@octoprint /tmp $ ^C
pi@octoprint /tmp $ sudo update-rc.d mjpg-streamer defaults
update-rc.d: using dependency based boot sequencing
insserv: script mjpg-streamer is not an executable regular file, skipped!
pi@octoprint /tmp $ cd /home/pi/
Desktop/ mjpg-streamer/ .octoprint/ OctoPrint/ python_games/
pi@octoprint /tmp $ cd /home/pi/mjpg-streamer/
pi@octoprint ~/mjpg-streamer $ cd
.git/ mjpg-streamer-experimental/
pi@octoprint ~/mjpg-streamer $ cd mjpg-streamer-experimental/
pi@octoprint ~/mjpg-streamer/mjpg-streamer-experimental $ sudo make install
install --mode=755 mjpg_streamer /usr/local/bin
install --mode=644 input_uvc.so output_file.so output_http.so input_raspicam.so /usr/local/lib/
install --mode=755 -d /usr/local/www
install --mode=644 -D www/* /usr/local/www
pi@octoprint ~/mjpg-streamer/mjpg-streamer-experimental $
pi@octoprint ~ $ sudo chmod +x /etc/init.d/mjpg-streamer
pi@octoprint ~ $ sudo update-rc.d mjpg-streamer defaults
update-rc.d: using dependency based boot sequencing