PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PID-File for init.d-Service erzeugen



englandschorsch
21.05.07, 17:28
Hallöchen,

ich würde gerne stunnel auf einem Debian-Server laufen lassen. Wie bei Debian üblich, habe ich ein init.d-Script geschrieben, dass über den Befehl "start-stop-daemon" stunnel startet. Jetzt würde ich gerne an "start-stop-daemon" per Paramter "--pidfile" die Datei "/var/run/stunnel.pid" übergeben.

Laut Man Page zu start-stop-daemon, wird empfohlen, diese Datei vom Prozess (hier also stunnel) selbst erzeugen zu lassen. Wie mache ich das? Wie kann ich die PID von stunnel rausbekommen und in das PID-File schreiben? Stunnel macht das ja offensichtlich nicht automatisch.

Edit: So sieht mein script bisher aus:

#! /bin/sh
#
# Stunnel Daemon Script to start / stop the stunnel daemon
# Author: Schorsch
#

cd /

DAEMON=/usr/local/sbin/stunnel
NAME=stunnel
DESC="Schorsch's Stunnel"
CONF=/etc/stunnel.conf

PIDFILE=/var/run/stunnel.pid

set -e

start_daemon()
{
echo -n "==> Starting $DESC: "
start-stop-daemon --start --quiet --oknodo --pidfile "${PIDFILE}" --exec $DAEMON -- $CONF
echo "$NAME started."
}

stop_daemon()
{
echo -n "==> Stopping $DESC: "
start-stop-daemon --stop --quiet --oknodo --pidfile "${PIDFILE}"
rm -f $PIDFILE
echo "$NAME stopped."
}


case "$1" in
start)
start_daemon
;;
stop)
stop_daemon
;;
restart|force-reload)
stop_daemon
sleep 1
start_daemon
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0


Gruß,
Schorsch

403
21.05.07, 19:18
schreibe es einfach in die stunnel.conf


z.B.
pid = /var/run/stunnel.pid

englandschorsch
21.05.07, 20:12
schreibe es einfach in die stunnel.conf
z.B.
pid = /var/run/stunnel.pid
*rotwerd* Upis, da hab ich wohl nicht die ganze Doku gelesen. Dieser Parameter ging mir durch die Lappen. SORRY!!! :o

Trotzdem vielen Dank, 403!!!

Meine Frage bleibt dennoch dieselbe, denn ich habe auch ein paar selbst programmierte Daemons von Kollegen am Laufen, die definitiv nicht ihre eigene PID-Datei schreiben.
Wie kann ich in meinem init.d-Script die PID des gestarteten Daemons rausbekommen, um sie in die PID-Datei zu schreiben? Sorry, bin ein Newb, was Shell-Scripts angeht. :D

403
21.05.07, 20:54
soviele Moeglichkeiten wirst du wohl gar nicht brauchen :)

http://www.mail-archive.com/debian-user-german@lists.debian.org/msg180981.html

pgrep ist auch ganz nett, aber denk dran, das liefert dann _alle_ PIDs...

englandschorsch
21.05.07, 21:32
Hm, also wenn ich nur nach dem Namen des Prozesses suche, dann kann ich --pidfile auch weglassen, denn start-stop-daemon macht ja genau das. D.h. wenn der Daemon angehalten wird, einfach ein killall mit dem Prozessnamen.

Genau das wollte ich aber vermeiden, da unter Umständen das Programm mehrmals (von anderen Benutzern) gestartet ist. Ich will wirklich nur den einen Prozess, der als Daemon in meinem init.d-Skript gestartet worden ist, abschießen. D.h. ich brauch schon genau die PID.

Verstehst Du, was ich meine? "ps ax | grep MyDaemon" liefert mir ja unter Umständen mehrere Prozesse...