
Estoy intentando ejecutar el siguiente comando:
$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql
Produce una gran cantidad de resultados de error, de los cuales solo puedo ver el final dentro de mi shell; necesito ver el comienzo para descubrir qué está yendo mal.
...
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6065: ERROR: current transaction is aborted, commands ignored until end of transaction block
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6075: ERROR: current transaction is aborted, commands ignored until end of transaction block
psql:/usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql:6081: ERROR: current transaction is aborted, commands ignored until end of transaction block
Sin embargo, si intento enviar los mensajes a un archivo de texto:
$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql > error.txt
El archivo de texto solo contiene tres comandos:
SET
BEGIN
ROLLBACK
Entonces, ¿por qué no se envía todo el resultado al archivo de texto y cómo puedo verlo todo?
Respuesta1
En Unix (y otros), normalmente hay dos flujos de salida que desea utilizar, STDOUT y STDERR. Ambos sonflujos estándar.
Con >
usted solo redirige STDOUT a un archivo.
Con 2>
usted redirige STDERR a un archivo (el "2" porque su descriptor de archivo es "2").
En realidad, también existe STDIN, con el que puedes redirigir <
. Estegráficomuestra cómo interactúan normalmente.
Dado que los mensajes de error siempre deben imprimirse en STDERR (y la mayoría de los programas lo respetan), intente algo similar a esto para separar la salida normal y la salida de error:
command > normal.log 2> err.log
De manera similar, puedes redirigir STDERR a STDOUT.
command 2>&1 > out.log
En pocas palabras, también puedes redirigir todo a un archivo de inmediato, al menos conmayoríaconchas. Sin embargo, no confíe en esto para la portabilidad.
command &> out.log