stop pkill linux ubuntu unix pid

pkill - show process linux



¿Debe mi archivo pidfile estar ubicado en/var/run? (4)

Pregunto en ambos contextos: técnica y estilísticamente.

¿Puede mi aplicación / daemon mantener un archivo pid en /opt/my_app/run/ ?

¿Es muy malo hacerlo?

Mi necesidad es esta: mi daemon se ejecuta bajo un usuario específico, y el implementador debe ejecutar un nuevo directorio en /var/run , chown y chgrp para hacer que mi daemon se ejecute. Parece más fácil simplemente mantener el archivo pidfile local (al daemon).


/ opt se usa para instalar aplicaciones ''autónomas'', por lo que no hay nada malo aquí. Usar /opt/my_app/etc/ para archivos de configuración, /opt/my_app/log/ para registros, etc., práctica común para este tipo de aplicación.

De esta forma, puede distribuir sus aplicaciones como un archivo TGZ en lugar de mantener un paquete para cada administrador de paquetes (al menos DEB desde que etiquetó a ubuntu ). Lo recomendaría para aplicaciones internas o situaciones en las que tenga un gran control sobre el medio ambiente. El razonamiento es que no tiene sentido si la caja fuerte cuesta más de lo que está poniendo adentro (el trabajo requerido para empacar la aplicación no debe eclipsar el esfuerzo requerido para escribir la aplicación).


La ubicación del archivo pid debe ser configurable. / var / run es estándar para los archivos pid, lo mismo que / var / log es estándar para los registros. Pero su daemon debería permitirle sobrescribir esta configuración en algún archivo de configuración.


No pondría un archivo pid en un directorio de instalación de aplicaciones 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 allí como un posible intento de intrusión ...

La ubicación normal para los archivos pid 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, /var/run/gmooredaemon que cree un subdirectorio /var/run/gmooredaemon y que lo /var/run/gmooredaemon al usuario que ejecuta el daemon antes de iniciar /var/run/gmooredaemon con el usuario e 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 /var/run . Tenga en cuenta que la parte raíz del iniciador, o un script de arranque que se ejecuta como root, necesita crear el directorio (para un usuario humano, el directorio se crea cuando el usuario inicia sesión).

De lo contrario, elija una ubicación en /tmp o /var/tmp , pero esto introduce una complejidad adicional porque el nombre del archivo del pid no se puede determinar de manera única si se encuentra en un directorio de escritura mundial.

En cualquier caso, facilítelo (opción de línea de comando, 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.


Otra convención, si no está ejecutando el script como root, es poner el archivo pid en ~/.my_app/my_app.pid . Es más simple de esta manera sin dejar de ser seguro ya que el directorio de inicio no es escribible en todo el mundo.