Foros del Web » Administración de Sistemas » Unix / Linux »

Ejecutar dos instancias a la vez y comprobar cuando terminan

Estas en el tema de Ejecutar dos instancias a la vez y comprobar cuando terminan en el foro de Unix / Linux en Foros del Web. Muy buenas, Tengo una pequeña duda. Estoy haciendo un script en bash (linux) para que cuando lo ejecute borre una BD, cree otra nueva y ...
  #1 (permalink)  
Antiguo 29/11/2012, 10:08
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Mensaje Ejecutar dos instancias a la vez y comprobar cuando terminan

Muy buenas,

Tengo una pequeña duda. Estoy haciendo un script en bash (linux) para que cuando lo ejecute borre una BD, cree otra nueva y exporte un backup que tengo yo. Por otro lado este script se encarga de sincronizar dos carpetas locales con el comando rsync.

La cosa es que me gustaría hacer estas dos acciones al a vez, para no tener que esperar que termine una y comience la otra y así ahorrar tiempo, pero no sabría como hacerlo. Había pensado en ejecutarlas en segundo plano (poner el comando en segundo plano) pero no sabría cuando termina dicha acción para que me muestre un mensaje o algo... y a la vez sincronice con rsync...

Alguna sugerencia ???

Muchas gracias a todos :)
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 30/11/2012, 07:02
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

¿lo vas a correr a mano todas las veces? porque si es un proceso automatizado lo mejor es que lo dividas en dos partes.

Si va a correr a mano, creo que lo más simple es que el script mande su salida a un archivo de log, y al mismo tiempo hagas un tail -f a ese archivo


Saludos.
  #3 (permalink)  
Antiguo 30/11/2012, 09:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

Sería poniendo & al final , por ejemplo si tienes el siguiente script
#!/bin/sh
vlc
sleep 10
killall vlc

al ejecutarlo, nunca va a apagar el vlc
en cambio si el script lo dejas así
#!/bin/sh
vlc &
sleep 10
killall vlc
va a ocurrir que al ejecutarse vlc va a funciobar solo por 10 segundps, o sea permiete seguir la secuencia marcada en el script
  #4 (permalink)  
Antiguo 30/11/2012, 19:37
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

El problema es que necesitaría saber cuando terminan ambos proceso, tanto el rsync como el restaurar el backup de la bd :S ! Y si, lo ejecutaré "a mano" un .sh, vamos.

Un saludo y gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #5 (permalink)  
Antiguo 03/12/2012, 05:48
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

con el tail (o tee) podrías ver la salida y saber cuándo termina. También podrías hacer que se te envíe un correo al terminar, o crear un archivo, etc. Te pongo un ejemplo de una solución simple y sucia

script 1:
Código BASH:
Ver original
  1. rsync.....
  2. touch "termine1"

script2
Código BASH:
Ver original
  1. bd backup...
  2. touch "termine2"

manejador:
Código BASH:
Ver original
  1. sh script1 &
  2. sh script2 &
  3.  
  4. while [ ! -f termine1 ]
  5. do
  6.     sleep 5
  7. done
  8.  
  9. echo "Termino el script 1"
  10.  
  11. while [ ! -f termine2 ]
  12. do
  13.     sleep 5
  14. done
  15.  
  16. echo "terminó el script 2"
  17.  
  18. rm termine{1,2}
  #6 (permalink)  
Antiguo 03/12/2012, 06:06
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

Cita:
Iniciado por AlvaroG Ver Mensaje
con el tail (o tee) podrías ver la salida y saber cuándo termina. También podrías hacer que se te envíe un correo al terminar, o crear un archivo, etc. Te pongo un ejemplo de una solución simple y sucia

script 1:
Código BASH:
Ver original
  1. rsync.....
  2. touch "termine1"

script2
Código BASH:
Ver original
  1. bd backup...
  2. touch "termine2"

manejador:
Código BASH:
Ver original
  1. sh script1 &
  2. sh script2 &
  3.  
  4. while [ ! -f termine1 ]
  5. do
  6.     sleep 5
  7. done
  8.  
  9. echo "Termino el script 1"
  10.  
  11. while [ ! -f termine2 ]
  12. do
  13.     sleep 5
  14. done
  15.  
  16. echo "terminó el script 2"
  17.  
  18. rm termine{1,2}
Es una muy buena opción. La voy a probar :)

Había pensado otra, no sé si será válida, pero ejecutar las dos instancias en segundo plano, quedarme con su PID e ir comprobando cada X minutos si aún existe, si no existe es que ha terminado, pero me parece mejor la tuya :D

Gracias !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #7 (permalink)  
Antiguo 03/12/2012, 09:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ejecutar dos instancias a la vez y comprobar cuando terminan

Pues también serviría, y evitaría tener que crear archivos auxiliares

Etiquetas: bash, linux, rsync
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.