
Я пытаюсь выполнить следующую команду:
$ 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
В 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