viernes, 31 de diciembre de 2010

Redirección de la Salida de Errores en Linux

Hoy (si 31 de Diciembre del 2010) tuve un problema intentando capturar los errores en postgres que me daba un script.

Cualquier persona que haya trabajado con psql sabe que  muestra los errores durante la ejecución de los scripts en la pantalla. Sin embargo como el script era muy largo desde luego que era mejor, copiar todos los errores  en una archivo y luego revisarlos uno a uno. De hecho se sabe que cuando son muchos mensajes después de cierto numero de lineas los mensajes que aparecen al principio se van perdiendo y no es posible recuperarlos.

Lo primero que hay que tener en cuenta es que la salida de errores no es lo mismo que la salida estándar. Aunque tanto los resultados de la salida de error como la estándar arrojan los resultados en pantalla.

Por esa razón pensaba que con un simple:

plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost  > errores.out

Capturaría todos los errores. Pero así solamente se capturan los mensajes de la salida estándar. Para capturar los errores debe hacerse:


plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost  2> errores.out

Pero aquí tuve nuevamente un problema, no me daba de cuenta de que el "2>" era pegado y no separado. Me llevo tiempo darme cuenta.

Fuentes:

Curso de Linux Gratis. Tuberias. Wikilearning: http://www.wikilearning.com/curso_gratis/curso_de_linux-redirecciones_y_tuberias/4230-13

1 comentario:

  1. para redirigir la salida de errores al mismo tiempo que la salida estándar a un archivo se utiliza por ejemplo:

    plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost 2>&1 errores.out

    ResponderEliminar