5

Я пытаюсь запустить следующую команду:

$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql 

Он выдает огромное количество ошибок, из которых я вижу только конец в своей оболочке - мне нужно увидеть начало, чтобы понять, что происходит не так.

... 
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

Однако, если я пытаюсь отправить сообщения в текстовый файл:

$ psql -d template_postgis -f /usr/local/pgsql-9.1/share/contrib/postgis-2.0/postgis.sql > error.txt

Текстовый файл содержит только три команды:

SET
BEGIN
ROLLBACK

Так почему же не весь вывод отправляется в текстовый файл, и как я могу увидеть весь вывод?

1 ответ1

14

В Unix (и других) обычно есть два выходных потока, которые вы хотите использовать, STDOUT и STDERR. Оба являются стандартными потоками.

С > вы только перенаправляете STDOUT в файл.

С 2> вы перенаправляете STDERR в файл ("2", потому что его дескриптор файла - "2").


На самом деле, есть и STDIN, который вы можете перенаправить с помощью < . На этом рисунке показано, как они обычно взаимодействуют.

диаграмма

Так как сообщения об ошибках всегда должны быть напечатаны в STDERR (и большинство программ учитывают это), попробуйте что-нибудь подобное, чтобы отделить нормальный вывод и вывод ошибок:

command > normal.log 2> err.log

Точно так же вы можете перенаправить STDERR в STDOUT.

command 2>&1 > out.log

Для краткости вы можете сразу же перенаправить все в один файл - по крайней мере, с большинством оболочек. Не полагайтесь на это для мобильности все же.

command &> out.log

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .