¿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
Respuesta
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.
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
@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. –
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
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.
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
- 1. Conseguir un PID de un proceso de fondo Ejecutar como otro usuario
- 2. Ejecute web.py como daemon
- 3. Ejecutando SBT como Daemon
- 4. ¿Cómo ejecutar gdb contra un daemon en segundo plano?
- 5. contexto python-daemon no se inicia cuando hay un archivo PID obsoleto
- 6. Ejecutar código como un usuario diferente (C#)
- 7. ¿Cómo se puede ejecutar una máquina virtual Erlang como Daemon?
- 8. Ejecutar la aplicación de la consola Java como daemon (fondo)
- 9. ¿El mejor método para ejecutar una aplicación Java como un * nix Daemon o servicio de Windows?
- 10. ejecutar jenkins como usuario "hudson"
- 11. ¿Cómo se especifican los directorios log y pid de daemon?
- 12. Ubuntu: ejecutando Memcached como daemon
- 13. Circus, ejecutando circusd como daemon?
- 14. Ejecutar comando xp_cmdshell como usuario específico
- 15. Ejecutar como usuario diferente en FreeBSD
- 16. ¿Cómo puedo verificar que exista un archivo y ejecutar un comando si no?
- 17. Python Ejecutar un subproceso de daemon y leer stdout
- 18. Referencia para el manejo adecuado del archivo PID en Unix
- 19. ¿Cómo puedo ejecutar una secuencia de comandos de Perl como un daemon del sistema en Linux?
- 20. Cualquier problema al ejecutar un daemon a través de XSP2?
- 21. Ejecutar un procedimiento almacenado como permiso de otro usuario
- 22. Iniciar un daemon desde PHP
- 23. ¿Cómo ejecutar un programa y conocer su PID en Linux?
- 24. iniciando mongodb vía numactl como daemon
- 25. ¿Elegir un método para almacenar perfiles de usuario?
- 26. Ejecutar un script SQL almacenado como recurso
- 27. Ruby daemon con cierre limpio
- 28. start-stop-daemon no escribe en el archivo nginx.pid aunque el archivo esté presente
- 29. script de Python como un servicio Linux/daemon
- 30. Llamar a un subproceso python como daemon y salir
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. –