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 | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I needed to change the quotes in the default file DAEMON_ARGS line to get this to work i.e.: