Cómo ejecutar un script PHP a través de la línea de comandos (y que siga funcionando después de desconectarse)

StackOverflow https://stackoverflow.com/questions/575345

Pregunta

Estoy tratando de ejecutar un script php en mi control remoto servidor privado virtual a través de la línea de comandos. El proceso que sigo es:

  1. Cerrar sesión en el servidor utilizando la masilla
  2. En el indicador de línea de comandos, escriba> php myscript.php

El script se ejecuta muy bien. Pero el problema es que el guión deja de funcionar tan pronto como se cierre la ventana de la consola masilla.

Necesito el guión a seguir corriendo sin parar. ¿Cómo puedo hacer eso? Estoy funcionando con Debian en el servidor.

Gracias de antemano.

¿Fue útil?

Solución

Creo que Ben tiene la respuesta correcta, es decir, utilizar el comando nohup. nohup significa nohangup y significa que el programa debe ignorar una señal de colgar, generada cuando estás sesión de masilla se desconecta ya sea por usted o cerrar la sesión porque se le ha agotado el tiempo.

Es necesario tener en cuenta que la salida de su comando se añadirá a un archivo en el directorio actual llamado nohup.out (o $ HOME / nohup.out si los permisos que impiden la creación de nohup.out en el directorio actual) . Si el programa genera una gran cantidad de la producción, este archivo puede ser muy grande, también, puede utilizar la redirección de shell para redirigir la salida de la secuencia de comandos a otro archivo.

nohup php myscript.php >myscript.output 2>&1 &

Este comando se ejecutará la secuencia de comandos y enviar toda la producción (tanto estándar y el error) a la myscript.output archivo que se creará de nuevo cada vez que se ejecuta el programa.

La final y hace que la secuencia de comandos para ejecutar en segundo plano para que pueda hacer otras cosas mientras se está ejecutando o cierre de sesión.

Otros consejos

Una forma fácil es para ejecutarlo aunque nohup:

nohup php myScript.php & 

Si se ejecuta el comando php en un screen, desconectar el screen, entonces no va a terminar cuando se cierra la consola.

  

Screen es un multiplexor terminal que le permite gestionar muchos procesos a través de un terminal físico. Cada proceso tiene su propia ventana virtual, y se puede rebotar entre las ventanas virtuales que interactúan con cada proceso. Los procesos gestionados por la pantalla continúan funcionando cuando su ventana no está activa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top