Written by: on 20/10/2010 @ 12:22

PgAgent, dicho en palabras llanas, es como un “cron” pero de forma especifica para bases de datos Postgres y un nivel mucho mas potente, una gran ayuda para realizar trabajos programados.

Para la instalacion del pgagent, por ejemplo desde Debian, basta con ejecutar:
apt-get install pgagent

Un vez en el equipo procedemos a tarea de verdad, su configuracion. Primero tenemos que asegurarnos que tenemos instalado el lenguaje plpgsql:

CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
HANDLER plpgsql_call_handler
VALIDATOR plpgsql_validator;

Ahora toca crear los objetos necesarios en la bbdd para poder gestionar estos trabajos, para ello usaremos nuestro interprete de postgres favorito, por ejemplo pgAdmin III, y ejecutaremos sobre dicha base de datos el fichero pgagent.sql situado en:

/usr/share/pgadmin3/pgagent.sql

Un vez llegado a este paso ahora es necesario dejar el pgagent corriendo en forma de demonio, para que pueda realzar los trabajos en cada momento, por ejemplo copiando este script en el /etc/init.d/pgagent

#!/bin/bash
# /etc/init.d/pgagent
#
### BEGIN INIT INFO
# Provides: pgagent
# Required-Start: $local_fs $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Run postgres agent
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO
#. /etc/init.d/functions
. /lib/lsb/init-functions

RETVAL=0
prog="PgAgent"

start() {
log_daemon_msg "Starting pgAgent" "pgagent"

if start-stop-daemon --start --quiet --pidfile /var/run/pgagent.pid --exec /usr/bin/pgagent "hostaddr=127.0.0.1 dbname=postgres user=postgres password=XXXXXXX";then

log_end_msg 0
RETVAL=$?
echo
else
log_end_msg 1
fi
}

stop() {

log_daemon_msg "Stopping pgAgent" "pgagent"
if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/pgagent.pid; then
log_end_msg 0
# RETVAL=$?
# echo
else
log_end_msg 1
fi

}

#
# See how we were called.
#
case "$1" in
start)
start
;;
stop)
stop
;;
reload|restart)
stop
start
RETVAL=$?
;;
status)
status /usr/bin/pgagent
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac

exit $RETVAL

Si no queremos escribir la contraseña de acceso en ese script tambien es posible guardar en el .pgpass del root

Nos aseguramos que sea ejecutable
chmod 755 /etc/rc.d/init.d/pgagent

Y lo situamos en el proceso de arranque
update-rc.d pgagent defaults

Una recomendacion, borrar la conexion que ya teneis creada en el PgAdmin III y volver a crearla, puede ser que refrescando no muestre la seccion de los trabajos.

Catogories: GNU/Linux, postgres, Servidores

2 Responses

  1. [...] PgAgent, instalación y configuración PgAgent, dicho en palabras llanas, es como un “cron” pero de forma especifica para bases de datos Postgres y un nivel mucho mas potente, una gran ayuda para realizar trabajos programados. Para la instalacion del pgagent, por ejemplo desde Debian, basta con ejecutar: apt-get install pgagent Un vez en el equipo procedemos a tarea de [...]…(read more) [...]

  2. Jorge Valdivia dice:

    Que bueno era justo la informacion que estaba buscando…
    pero tengo una duda.. en la parte de ”
    chmod 755 /etc/rc.d/init.d/pgagent” no se supone que tendria que ser.. “chmod 755 /etc/init.d/pgagent”

Leave a Reply