Skip to content

Instantly share code, notes, and snippets.

@mekya
Last active January 18, 2019 08:06
Show Gist options
  • Save mekya/c58351d865aca77b3e00c50656c8482e to your computer and use it in GitHub Desktop.
Save mekya/c58351d865aca77b3e00c50656c8482e to your computer and use it in GitHub Desktop.
AWS Marketplace service script
#!/bin/sh
# /etc/init.d/antmedia
### BEGIN INIT INFO
# Provides: antmedia
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts the ant media service
# Description: This file is used to start the daemon and should be placed in /etc/init.d
# chkconfig: 2345 85 85
# processname: red5
### END INIT INFO
# Author: Sheldon Neilson <sheldon[AT]neilson.co.za>
# Url: www.neilson.co.za
# Date: 25/04/2013
# Modified by Paul Gregoire <mondain[AT]gmail.com> on 18 May 2016
NAME="antmedia"
DESC="Ant Media Service"
# The path to Jsvc
EXEC="/usr/bin/jsvc"
# The path to the folder containing daemon jar
FILE_PATH="/usr/local/$NAME"
# If red5 home is set, use it
if [ ! -z "$RED5_HOME" ]; then
echo "Setting file path using RED5_HOME"
FILE_PATH=$RED5_HOME;
fi
export RED5_HOME=$FILE_PATH;
echo "Path $FILE_PATH";
# The path to the folder containing the java runtime
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
# Our classpath including our jar file and the Apache Commons Daemon library
CLASS_PATH="$FILE_PATH/commons-daemon-1.0.15.jar:$FILE_PATH/ant-media-server-service.jar:$FILE_PATH/conf"
# The fully qualified name of the class to execute
CLASS="org.red5.daemon.EngineLauncher"
# Any command line arguments to be passed to the our Java Daemon implementations init() method
ARGS="9999"
# The file that will contain our process identification number (pid) for other scripts/programs that need to access it.
PID="/tmp/$NAME.pid"
# System.out writes to this file...
LOG_OUT="$FILE_PATH/log/$NAME-service.log"
# System.err writes to this file...
LOG_ERR="$FILE_PATH/log/$NAME-error.log"
# JAVA options
# You can set JVM additional options here if you want
if [ -z "$JVM_OPTS" ]; then
JVM_OPTS="-Xverify:none -XX:+TieredCompilation -XX:+UseBiasedLocking -XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m -Dorg.terracotta.quartz.skipUpdateCheck=true -XX:+UseG1GC"
fi
OS=`uname`
case "$OS" in
CYGWIN*|MINGW*) # Windows Cygwin or Windows MinGW
P=";" # Since these are actually Windows, let Java know
;;
Linux*)
LD_LIBRARY_PATH=$FILE_PATH/lib/native
export LD_LIBRARY_PATH
# Native path
NATIVE="-Djava.library.path=$LD_LIBRARY_PATH"
;;
Darwin*)
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$FILE_PATH/lib/native
export DYLD_LIBRARY_PATH
# Native path
NATIVE="-Djava.library.path=$DYLD_LIBRARY_PATH"
;;
SunOS*)
if [ -z "$JAVA_HOME" ]; then
export JAVA_HOME=/opt/local/java/sun6;
fi
;;
*)
# Do nothing
;;
esac
# Set up logging options
LOGGING_OPTS="-Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector -Dcatalina.useNaming=true"
# Set up security options
SECURITY_OPTS="-Djava.security.debug=failure -Djava.security.egd=file:/dev/./urandom"
# Set up tomcat options
TOMCAT_OPTS="-Dcatalina.home=$RED5_HOME"
ADDITIONAL_OPTS="-Djava.library.path=$RED5_HOME/lib/native"
JAVA_OPTS="$LOGGING_OPTS $SECURITY_OPTS $JAVA_OPTS $JVM_OPTS $NATIVE $TOMCAT_OPTS $ADDITIONAL_OPTS"
jsvc_exec()
{
cd $FILE_PATH
$EXEC -home $JAVA_HOME -user antmedia -cp $CLASS_PATH -cwd $RED5_HOME $JAVA_OPTS -errfile $LOG_ERR -pidfile $PID $1 $CLASS $ARGS
INITIALIZED=/usr/local/antmedia/conf/initialized
if [ ! -f "$INITIALIZED" ]
then
echo "sleep 3 ; /usr/local/antmedia/conf/init.sh" | at now
fi
}
case "$1" in
start)
echo "Starting the $DESC..."
#define ulimit
ulimit -n 65536
# Start the service
jsvc_exec
echo "The $DESC has started."
;;
stop)
echo "Stopping the $DESC..."
# Stop the service
jsvc_exec "-stop"
echo "The $DESC has stopped."
;;
restart)
if [ -f "$PID" ]; then
echo "Restarting the $DESC..."
# Stop the service
jsvc_exec "-stop"
# Start the service
jsvc_exec
echo "The $DESC has restarted."
else
echo "Daemon not running, no action taken"
exit 1
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {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