Home Linux Script als Daemon
05 | 09 | 2010
Schlagzeilen
Script als Daemon PDF Drucken E-Mail
Geschrieben von: Michael Grundmann   
Montag, 17. März 2008 09:50

Script als Daemon

Anbei habe ich mal ein Skript von Tilman Kranz (http://linuxfoo.de) o­nline gestellt.Er hat ein Skeleton gebaut um Script als _echten_ Unix-Daemon zu starten.Von hier ein Dank für das Script.

Oft tritt das administratorische Problem auf, einen "Dienst" zur Verfügung stellen zu müssen, der unabhängig von einem lokalen Terminal "laufen" soll. Dieser "Dienst" hat folgende Merkmale

* Er liest nicht von "stdin", und er schreibt nicht nach "stdout" oder "stderr".
* Er läuft in einer eigenen Prozessgruppe.
* Er hat ein eigenes Signalmanagement mit wohldefinierten Prozeduren für Neustart und Beenden.

Das in dieser Anleitung besprochene Shellscript versucht, diese Fähigkeiten anzubieten, so dass schliesslich ein "Dienst" mittels UNIX-Shellscripting zur Verfügung gestellt werden kann.

 

#!/bin/sh
########################################################################
#%shell-detach.sh -- Shell-Based Procedure Detachment
# Copyright 2005 Tilman Kranz < Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können. >
########################################################################

########################################################################
# routinen
########################################################################

# das ist der SIGHUP-handler
hup_handler() {
echo disowned: starting again
$0 --daemon < /dev/null &> /dev/null & disown

# der signalhandler beendet den prozess direkt
exit 0
}
trap hup_handler HUP

########################################################################
# setup
########################################################################

# werte das erste argument aus
case "$1" in
"-d"|"--daemon")
# verwirf das erste argument
shift
;;
*)
# kein restart angefordert - "hänge" die shell des
# derzeitigen prozesses "auf"
kill -HUP $$
wait $$
;;
esac

########################################################################
# hauptprogramm
########################################################################

# loop
while sleep 1 ; do
# hier die aktionen einführen
:
done

########################################################################
# fertig
########################################################################

exit 0

########################################################################
#%end of file shell-detach.sh
########################################################################