2010-03-23 20 views
11

Tengo un script PHP con bucle infinito. Necesito este script para siempre. Entonces, ejecutoCómo ejecutar secuencias de comandos infinitamente en segundo plano en Linux?

php /path/to/script.php > /dev/null & 

Y funciona en segundo plano en el contexto de seguridad de mi usuario actual. Pero cuando cierro la ventana de terminal (cerrar sesión), por supuesto, CentOS Linux mata mi programa.

Veo dos conjeturas: ejecutar desde un usuario diferente en segundo plano o crear un daemon. Necesito ayuda en cada situación.

¡Muchas gracias!

+0

posible duplicado de http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client – Ether

Respuesta

24

nohup es tu amigo.

nohup command & 
+0

¡Tan simple! ¡Gracias! –

6

creo que la solución general de que es nohup:

nohup es un comando POSIX hacer caso omiso de la señal HUP (colgar), lo que permite el comando para seguir funcionando después de que el usuario que emite el comando se ha desconectado La señal HUP (hangup) es, por convención, la forma en que un terminal advierte según los procesos de desconexión.

nohup se utiliza con más frecuencia para ejecutar comandos en segundo plano como daemons. La salida que normalmente iría a la terminal va a un archivo llamado nohup.out si aún no se ha redirigido. Este comando es muy útil cuando existe la necesidad de ejecutar numerosos trabajos por lotes que son interdependientes.

1

Se podía:

  • pantalla de instalación y ejecute el comando desde allí. pantalla es una sesión de terminal persistente que puede dejar en ejecución.
  • Escribir un init/advenedizo (lo que sea que se use) secuencia de comandos para que se carga en el arranque
  • Uso del lib pera system_daemon
  • Uso de cron si el trabajo por lotes se ajusta a la mejor escenario (sólo recuerde para comprobar si hay instancias en ejecución antes de iniciar otra, si y sólo si es un problema de concurrencia)
  • Editar: o como todos los demás y su hermano acaba de decir, nohup
0

Mediante el comando

nohup your_command &

Por ejemplo
nohup PhantomJS Highcharts-convert.js -host 127.0.0.1 -port 3003 &

aquí "PhantomJS Highcharts-convert.js -host 127.0.0.1 -port 3003 "era mi comando

Cuestiones relacionadas