rails - Engendrar un proceso de fondo en Ruby
delayed_jobs stop (2)
Mientras trabaje en un sistema operativo POSIX, puede usar fork
y exec
.
fork
= Crear un subproceso
exec
= Reemplazar el proceso actual con otro proceso
Luego debe informar que su proceso principal no está interesado en los subprocesos creados a través de Process.detach
.
job1 = fork do
exec "/path/to/daemon01"
end
Process.detach(job1)
...
Estoy escribiendo un script de bootstrapping de ruby para un proyecto escolar, y parte de este proceso de arranque es comenzar un par de procesos en segundo plano (que están escritos y funcionan correctamente). Lo que me gustaría hacer es algo como:
`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`
Sin embargo, eso bloquea en la primera llamada para ejecutar daemon1. He visto referencias a un método Process.spawn
, pero eso parece ser una característica de 1.9+, y estoy limitado a Ruby 1.8.
También intenté ejecutar estos demonios desde distintos hilos, pero me gustaría que mi script de arranque pueda salir.
Entonces, ¿cómo puedo comenzar estos procesos en segundo plano para que mi script de arranque no se bloquee y pueda salir (pero aún tenga los daemons ejecutándose en segundo plano)?
mejor manera de pseudodesamonizar:
`((/path/to/deamon1 &)&)`
dejará caer el proceso en su propio caparazón.
La mejor manera de demonizar realmente:
`service daemon1 start`
y asegúrese de que el servidor / usuario tenga permiso para iniciar el daemon real. echa un vistazo a la herramienta ''deamonize'' para Linux para configurar tu deamon.