Versuchen Sie start-stop-daemon(8)
mit dem --pidfile
Argument in Ihrem Init-Skript. Lassen Sie Ihr Programm seine PID an einen bestimmten Ort schreiben (normalerweise in einer Konfigurationsdatei festgelegt).
Worauf Sie achten müssen, sind veraltete PID-Dateien, zum Beispiel, wenn eine Sperrdatei über einen Neustart hinweg bestehen bleibt. Diese Logik wird am besten im Init-Skript selbst implementiert, daher die --exec
-Option zu start-stop-daemon
.
Wenn z. B. /var/run/foo.pid
1234
ist und /proc/1234/exe
nicht Ihr Dienst ist, ist die Sperrdatei veraltet und sollte ruhig entfernt werden, damit der Dienst normal gestartet werden kann.
So weit wie Ihre Anwendung geht, stellen Sie einfach sicher, dass der Speicherort der Sperrdatei konfigurierbar ist, und einige Mittel existieren, um dem Init-Skript mitzuteilen, wo es zu setzen ist.
Zum Beispiel: (Beispiel:/etc/default/foo):
PIDFILE=/var/run/foo.pid
OTHEROPTION=foo
dann in /etc/init.d/foo:
[ -f /etc/default/foo ] && . /etc/default/foo
Wieder andere als auf die Schreib Datei konsequent, sollte diese ganze Logik außerhalb Ihrer Anwendung behandelt werden.
Nicht so sicher, dass dies gehört auf SF verwenden. Es hört sich so an, als hätte er einen Service geschrieben und möchte ihn mit einem richtigen Init-Skript versenden. –