Revision [20742]

This is an old revision of DaemonEinrichtenDebian made by ToBo on 2015-02-18 22:30:10.

 

Daemon einrichten


Diese Anleitung zeigt die Schritte für die Einrichtung eines Daemons unter OsLinux Debian auf. Einen neuen Daemon unter Debian. In meinem Fall war es u.a. ein Backup-Skript, welches erkennt, wenn ein bestimmter USB-Stick eingesteckt wurde und daraufhin ohne weiteres Zutun ein Backup macht.

Das Skript soll natürlich im Hintergrund des Systems laufen. Also ein Fall für einen Linux-Daemon.

Die erste Voraussetzung ist, es existiert bereits ein Skript wie in dem nachfolgenden Beispiel, welches im Systemhintergrund als "Daemon" laufen soll. Dieses Skript muss eine Endlosschleife enthalten. Auf das Backup-Skript (usbautobackup.sh) wird ab jetzt nicht näher eingegangen. Anstelle des Backup-Skripts kann natürlich jeder belibige Code stehen.

/home/root/backup/usbautobackup.sh
#!/bin/sh
while [ 1 ]
do

    # place your code here

done



Als zweiten Schritt wird unter /etc/init.d/ ein Start-Skript erstellt, dass beim Wechsel von Runlevel zu Runlevel vom System aufgerufen wird.

/etc/init.d/autobackup
#!/bin/sh
# Andreas Tobola, 2012

# The name of the deamon
DAEMON=autobackup

touch /var/lock/$DAEMON

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    start-stop-daemon --background --start --pidfile /var/run/$DAEMON.pid --make-pidfile --exec /home/root/backup/usbautobackup.sh
    echo "USB bar auto backup daemon started."
    ;;
  stop)
    start-stop-daemon --stop --pidfile /var/run/$DAEMON.pid
    echo "USB bar auto backup daemon stoped."
    ;;
  *)
    echo "Usage: /etc/init.d/$DAEMON {start|stop}"
    exit 1
    ;;
esac

exit 0


Geeignete Rechte setzen
chmod 755 /etc/init.d/autobackup


Der nachfolgende Test sollte ergeben:
# /etc/init.d/autobackup start
USB bar auto backup daemon started.
# /etc/init.d/autobackup stop
USB bar auto backup daemon stoped.


Damit das System den Daemon automatisch beim Wechsel der Runlevel startet bzw. stopt, muss dieses zumindest unter dem aktuellen Runlevel verlinkt werden. Mit dem Befehl runlevel, lässt sich herausfinden in welchem Runlevel das System im Normalfall arbeitet. Für Runlevel 2 wechselt man in das Verzeichnis /etc/rc2.d/. Für Runlevel 3 entsprechend /etc/rc3.d/. Die Nummer 80 im Beispiel gibt an, in welcher Reihenfolge die Skripte gestartet werden. In dem fall an stelle 82. Dazu schaut man sich in /etc/rc2.d/ was dort nach einander gestartet wird und wählt dann eine entsprechende Nummer, damit schon das Grundsystem verfügbar ist, wenn das eigene Skript gestartet wird. Wenn man die symbolischn Links unter /etc/rc2.d/ zu kryptisch empfindet, so wählt man eine recht hohe Nummer, notfalls 99. Nummer dürfen mehrfach vergeben werden. Man erstellt eine Datei mit S für Start (Starten beim Eintritt in den Runlevel) und eine Datei mit K für Kill (beim Verlassen des Runlevels beenden).
cd /etc/rc2.d/
ln -s /etc/init.d/autobackup S82autobackup
ln -s /etc/init.d/autobackup K82autobackup


Alternativ können unter Debian die üblichen symbolischen Links wie folgt automatisch erstellt werden, allerdings rate ich davon ab.
update-rc.d autobackup defaults


Und wenn die Links wieder weg sollen, dann gib man dem Computer das folgende Kommando:
update-rc.d -f  autobackup remove




Ein weiteres Beispiel: LinuxStartScriptExample2


Siehe auch
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki