Sobald man mal ein eigenes start script schreiben will, sucht man nach einem guten template, welches Möglichst die Standard Funktionen benutzt; diese sind bei RedHat z.B. in der Datei: /etc/init.d/functions zu finden.
Nachfolgend finden sich zwei Beispiele; das erste benutzt man, wenn man das „daemon-handling“ selbst machen will, dass zweite nutzt die entsprechende Funktion in der functions Datei.
# Init-Script template # # Written by Steven Varco <email@adresse.tld> # # chkconfig: - 80 20 # description: SERVICENAME daemon # # processname: SERVICENAME # config: /etc/SERVICENAME.conf # pidfile: /var/run/SERVICENAME # source functions library . /etc/init.d/functions APP_NAME=myApp # Name of the application (will be excecuted!) APP_DESC="SERVICE DESCRIPTION" # Short description APP_PID=/var/run/$APP_NAME # PID file APP_CONFIG="/etc/SERVICENAME.conf" # Config file case "$1" in start) echo -n "Starting $APP_NAME..." # Start functions #$(which runuser) -l myuser $APP_NAME echo $! > $APP_PID # Output OK or FAIL RETVAL=$? if [ $RETVAL -eq 0 ]; then echo_success else echo_failure fi # Create PID-File if [ ! -f "$APP_PID" ] ; then touch $APP_PID fi ;; stop) echo "Stopping $APP_NAME..." # Stop functions if [ -f $APP_PID ] ; then kill $($APP_PID) # Output OK or FAIL RETVAL=$? if [ $RETVAL -eq 0 ]; then echo_success else echo_failure fi else echo "$APP_NAME is not running" fi # Remove PID-File if [ -f "$APP_PID" ] ; then rm -f $APP_PID fi ;; restart) $0 stop && sleep 3 && $0 start || return=$0 ;; status) if [ -f "$APP_PID" ] ; then PID=$(cat $PID_FILE) PSPID=$(ps -p $PID -o comm=) if [ -n "$PSPID" ]; then echo -n "$APP_NAME is running as PID: $PID and command: $PSPID" echo_success else echo -n "$APP_NAME dead but pid file exists!" echo_warn fi else echo -n "$APP_NAME is not running" fi exit $RETVAL ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac |
#!/bin/bash # # Init file for myApp # # Written by Vorname Name <email@adresse.tld>. # # chkconfig: - 80 20 # description: MyApp daemon # # processname: myapp # config: /etc/myapp.cfg # pidfile: /var/run/myapp source /etc/rc.d/init.d/functions ### Default variables CONFIG="/etc/myapp.cfg" [ -x /usr/sbin/myapp ] || exit 1 [ -r "$CONFIG" ] || exit 1 RETVAL=0 prog="myapp" desc="myApp daemon" start() { echo -n $"Starting $desc ($prog): " daemon $prog -c "$CONFIG" -d RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Shutting down $desc ($prog): " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } restart() { stop start } reload() { echo -n $"Reloading $desc ($prog): " killproc $prog -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETVAL |