2011-06-03 20 views
16

Configuré un servidor Amazon EC2. Tengo un script de Python que se supone que descarga grandes cantidades de datos de la web al servidor. Puedo ejecutar el script desde la terminal hasta el ssh, sin embargo, muy a menudo pierdo la conexión ssh. Cuando pierdo la conexión, el script se detiene.Cómo ejecutar continuamente una secuencia de comandos de Python en un servidor EC2?

¿Hay un método donde le digo al script que se ejecute desde el terminal y cuando me desconecto, el script aún se ejecuta en el servidor?

Respuesta

26

Usted tiene algunas opciones.

  • Puede agregar su secuencia de comandos al cron para ejecutar regularmente.
  • Puede ejecutar su secuencia de comandos de forma manual, y separar + fondo de ella usando nohup.
  • Puede ejecutar una herramienta como GNU Screen, desconectar su terminal y cerrar sesión, solo para continuar donde lo dejó más tarde. Yo uso esto mucho.
    • Por ejemplo:
      1. sesión en su equipo, ejecute: screen.
      2. Comience su secuencia de comandos y simplemente cierre su terminal o desconecte su sesión correctamente con: Ctrl + A, D, D.
      3. Desconecte de su terminal.
      4. Vuelva a conectar en algún momento posterior y ejecute screen -rD. Deberías ver tus cosas tal como las dejaste.
  • También puede añadir su secuencia de comandos para /etc/rc.d/ a invocar en el libro y siempre estar en ejecución.
+0

Gracias por la información en 'pantalla'. – David

1

Si solo es una utilidad que ejecutas ad-hoc, no un daemon de servicio de algún tipo, solo lo ejecutaría en screen. De lo que puedes desconectarte si lo deseas y volver a abrir la terminal más tarde ... O reconecta la terminal si te desconectas. Debería estar en el administrador de paquetes de Linux Distros. Sólo la búsqueda de screen

http://www.gnu.org/software/screen/

+0

Gracias por la respuesta. – David

6

También puede utilizar nohup para hacer su script se ejecute en segundo plano o cuando haya desconectado de la sesión:

nohup script.py &

El & al final del comando dice explícitamente nohup para funcionar tu script en el fondo.

Cuestiones relacionadas