No pondría un archivo pid en un directorio de instalación de la aplicación como /opt/my_app/whatever
. Este directorio podría montarse como de solo lectura, podría compartirse entre máquinas, podría ser visto por un daemon que trate cualquier cambio como posible intento de robo ...
La ubicación normal para los archivos pidf es /var/run
. La mayoría de los equipos limpiarán este directorio en el arranque; en Ubuntu esto se logra mediante /var/run
un sistema de archivos en memoria (tmpfs).
Si inicia el daemon desde una secuencia de comandos que se ejecuta como raíz, haga que cree un subdirectorio /var/run/gmooredaemon
y que lo asigne al usuario que ejecuta daemon antes de su
iniciar el daemon.
En muchos sistemas Linux modernos, si inicia el daemon desde un script o iniciador que no se ejecuta como root, puede poner el archivo pid en /run/user/$UID
, que es un equivalente por usuario del /var/run
tradicional.
De lo contrario, elija una ubicación en /tmp
o /var/tmp
, pero esto presenta una complejidad adicional porque el nombre del archivo del pid no se puede determinar de manera única si está en un directorio de escritura mundial.
En cualquier caso, facilite (la opción de línea de comandos, más tal vez una opción de tiempo de compilación) para que el distribuidor o el administrador cambien la ubicación de los archivos pidfile.
/run ahora es solo de escritura por el propietario (raíz). ¿Cómo escribirían las aplicaciones un archivo pidf allí? – TSG
@TSG Las distribuciones modernas generalmente crean un directorio por usuario en '/ run/user'. No recuerdo que '/ run' haya sido editable por todos.Pero los archivos pidfiles en '/ run' son comunes, sin embargo, son la norma para los servicios del sistema. El archivo pidfile está escrito por un supervisor que se ejecuta como root, o por un script de inicio que se ejecuta como root antes de iniciar el daemon real con privilegios posiblemente reducidos. – Gilles