2010-10-18 10 views
11

¿Existe un lugar preferido para almacenar un archivo pid para un daemon que se ejecuta como usuario?/var/run es el lugar estándar, pero esto es para un daemon de usuario por lo que no tiene privilegios de escritura allí. Presumiblemente mi daemon se iniciará desde .profile o .bashrc o algo así. ¿Guardarlo en/tmp es una mala idea?Almacenar archivo pid para ejecutar un daemon como usuario

+2

guardar en/tmp no es bueno, ya que cualquier convención de nombres que había inventado (por ejemplo, '/ tmp// .pid') podría estar ya utilizado por otra aplicación y no podrá crear el archivo. Usar un nombre de directorio aleatorio bajo '/ tmp' arruina la idea del archivo pid - para poder obtener el pid rápidamente sin escanear la lista de procesos. –

Respuesta

8

Si se está ejecutando para un usuario, veamos, qué tipo de almacenamiento existe que es específico del usuario.

Hmmm.

Eso es todo! El directorio de inicio Sabía que llegaría a mí eventualmente :-)


Perdón por la luz jab. En serio, me limitaría a esconder el PID en $HOME/.daemon.pid o ~/.daemon.pid (cómo nombre el archivo depende de usted, por supuesto).

Esto es, por supuesto, suponiendo que solo tendrá un daemon ejecutándose para un usuario. Si no, tendrás que ser un poco más complicado.


Y es de esperar disipar sus temores de que un usuario inadvertidamente eliminar archivos desconocidos en su directorio personal, por eso lo haces "oculta", comenzando con un carácter ..

La mayoría de los usuarios no experimentados nunca deben incluso ver estos usuarios experimentados y deberían saber mejor que perder el tiempo con ellos.

+0

Bueno, el usuario ve el directorio hom, y creo que sería más probable que eliminen el archivo si lo ven en ~ sin saber qué era – Falmarri

+1

@Falmarri: ¿Y cuál es el peligro en eso? Si realmente necesita el PID de nuevo, siempre puede mirar en la tabla de procesos. El archivo PID es solo una conveniencia. –

+4

Es por eso que pones un '.' delante de él. Los usuarios que no saben lo que hacen probablemente nunca sepan que existe. Y si regularmente ven los archivos ocultos, un solo error al borrar '.bashrc' les enseñará el error de sus formas :-) Si eres _realmente_ paranoico, coloca el PID en' ~/.dont_EVER_delete_me_or_you_WILL_be_sorry/.daemon.pid' . – paxdiablo

0

Sugiero que vaya por un subdirectorio dentro del directorio de inicio del usuario.

~/.programname/.pid 

Si hay cualquier otro dato de configuración de usuario, se puede almacenar en que también en este caso, con el fin de evitar abarrotar el directorio principal.

8

El XDG Basedir specification define dónde debe almacenarlos. La variable $XDG_RUNTIME_DIR define su ubicación, aunque no tiene ningún valor predeterminado.
La alternativa más común (si la variable no está ajustada) es /tmp/service-$USER.id.

Esto ayuda a mantener despejadas Homedirs, manteniendo todos los datos de tiempo de ejecución en

Cuestiones relacionadas