Назад | Перейти на главную страницу

Запись вывода длинной команды в файл в Ubuntu

Я использую Убунуту. Я просто хочу создать дамп postgre. Итак, я использую следующую команду:

sudo -u wap PGPASSWORD="postgres" pg_dump -h localhost -U postgres -d n26n -n public -FC -f /tmp/dump_file --verbose

Как и ожидалось, это создает дамп. Однако, поскольку я запускаю его в подробном режиме, я хочу, чтобы выходные данные регистрировались в файле. Я пробовал следующее:

sudo -u wap PGPASSWORD="postgres" pg_dump -h localhost -U postgres -d n26n -n public -FC -f /tmp/dump_file --verbose >> logfile

Файл журнала кажется пустым.

Как указать конец команды?

Без образца вывода, который вы получаете, я могу только строить предположения, но ваша команда содержит -f (--file) куда идет ваш вывод дампа: /home/me/dump_file.

-f file

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

Любой другой вывод будет из stderr потому что вы поставили --verbose и поэтому вы должны перенаправить этот вывод, используя 2> logfile1.

--verbose

Задает подробный режим. Это вызовет pg_dump для вывода подробных комментариев к объекту и времени запуска / остановки в файл дампа, а также сообщений о ходе выполнения до стандартной ошибки.

Пример:

sudo -u wap PGPASSWORD="postgres" \
   pg_dump -h localhost -U postgres \
   -d n26n -n public -Fc -f /tmp/dump_file --verbose 2> logfile1