Pruebe usar start-stop-daemon(8)
con el argumento --pidfile
en su script de inicio. Haga que su programa escriba su PID en una ubicación específica (generalmente determinada en un archivo de configuración).
Lo que debe tener en cuenta son los archivos PID obsoletos, por ejemplo, si un archivo de bloqueo persistió durante un reinicio. Esa lógica se implementa mejor en el script de inicio, de ahí la opción --exec
a start-stop-daemon
.
por ejemplo, si es /var/run/foo.pid
1234
y /proc/1234/exe
no es su servicio, el archivo de bloqueo es obsoleto y debe ser eliminado en silencio, permitiendo que el servicio se inicie normalmente.
Por lo que respecta a su aplicación, solo asegúrese de que la ubicación del archivo de bloqueo sea configurable, y existen algunos medios para indicarle al script de inicio dónde ubicarlo.
Por ejemplo: (muestra:/etc/default/foo):
PIDFILE=/var/run/foo.pid
OTHEROPTION=foo
Luego, en /etc/init.d/fu:
[ -f /etc/default/foo ] && . /etc/default/foo
vez más, que no sea por escrito a la archivo de forma coherente, toda esta lógica debe manejarse fuera de su aplicación.
No tan seguro de que esto pertenece en SF. Parece que ha escrito un servicio y desea enviarlo con un guión de inicio adecuado. –