#!/bin/bash #permite obtener los nombres de las bases de datos OUTPUT="$(psql -U openerp -d template1 -X -t -A -c "SELECT datname FROM pg_database where datname not in ('template0', 'template1', 'postgres')")" read -a arr_ids_temp <<< $OUTPUT #crea un arreglo con los nombres tamanio=${#arr_ids_temp[@]} #tamaƱo del arreglo mult_cuatro=(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100) #Estos multiplos de 4 se usan para actualizar las bases de datos en grupos de 4. PID_list=() #arreglo que almacena el id de los 4 procesos que estan actualizando bases de datos for (( i=0; i < $tamanio; ++i )) #ciclo para procesar cada base de datos do for a in "${mult_cuatro[@]}"; do # si es multiplo de 4 damos 3 minutos para que se actualicen las BD y luego matamos los 4 procesos. if [ "$i" == "$a" ] ; then sleep 180 kill -9 ${PID_list[@]} unset PID_list #vaciamos el arreglo de id de procesos break # rompemos el ciclo cuando encontramos la primera coincidencia de multiplicidad por 4 fi done /opt/openerp/server/openerp-server --addons-path="/opt/openerp/addons,/opt/openerp/web/addons" --update=doctor,l10n_co_doctor --database=${arr_ids_temp[$i]} & #cmd para actualizar cada BD PID_list+=($!) #apendizamos el proceso que se acaba de iniciar con el comando anterior done sleep 180 #al final del programa esperamos 3 minutos kill -9 ${PID_list[@]} #matamos todos los procesos que se iniciaron echo "======>FIN DE LA ACTUALIZACIƓN<====="