По моему опыту, даже lbuntu использует изрядное количество ресурсов. У меня был хороший опыт работы с Puppy на старом оборудовании, он обновил непригодную для использования машину Windows 95.
Это сообщение расширяет тему: Что такое небольшая бесплатная ОС Unix / Linux?
pg_dump -a -t table-country -p 5432 -U usr db-maint2 2>&1 | tee -a >"${LOGFILE}" >(psql -p 5432 -U postgres db-project >>"${LOGFILE}") >(psql -p 5432 -U postgres db-gp-projet >>"${LOGFILE}")
Почему?
Потому что слева направо:
pg_dump
выходит на стандартный вывод 2>&1
выводит поток ошибок на стандартный вывод |
направляет стандартный вывод и ошибку tee -a
, что сохранит содержимое канала и перешлет его (с опцией добавления по крайней мере для первой пересылки )нескольким командам >"${LOGFILE}"
СНАЧАЛА я хочу зарегистрировать дамп pg _stdout или errout. Обратите внимание на синтаксис для этого :без ()
вокруг имени файла. Я использую переменную в своем сценарии. >(psql -p 5432 -U postgres db-project >>"${LOGFILE}")
ЗАТЕМ моя первая КОПИРОВКА в качестве команды psql (с закрывающей скобкой для команды)>>"${LOGFILE}"
внутри предыдущей строки, я использую это, чтобы добавить (double>
)к моему файлу stdout psql (Я не получаю здесь ошибку, я мог бы. >(psql -p 5432 -U postgres db-gp-projet >>"${LOGFILE}")
ЗАТЕМ вторая команда psql со вторым добавлением стандартного вывода в файл журнала. Надеюсь, это поможет некоторым людям понять варианты использования тройников и труб.
Редактировать :моя последняя команда
pg_dump -a -t table-country -p 5432 -U usr db-maint2 2>&1 | tee -a > /dev/null >(psql -p 5432 -U postgres db-project >>"${LOGFILE}") >(psql -p 5432 -U postgres db-gp-projet >>"${LOGFILE}")
Стандартный вывод удаляется, а не загрязняется файл журнала. Было бы лучше сохранить поток ошибок в файле журнала с помощью
pg_dump -a -t table-country -p 5432 -U usr db-maint2 2>"${LOGFILE}" | tee -a > /dev/null >(psql -p 5432 -U postgres db-project >>"${LOGFILE}") >(psql -p 5432 -U postgres db-gp-projet >>"${LOGFILE}")
но это еще не проверено.
Изменение перенаправления двумя способами должно решить эту проблему. 1 )Перенаправить потоки вывода и ошибок для каждой команды. 2 )Измените оператор перенаправления так, чтобы он добавлял файл журнала, а не перезаписывал его.
Последняя команда должна выглядеть так:
pg_dump -a -t table-country -p 5432 -U usr db-maint2 2>&1 | tee >(psql -p 5432 -U postgres db-project &>> "initDB_$(date +%Y%m%d_%H%M).log") >(psql -p 5432 -U postgres db-gp-projet &>> "initDB_$(date +%Y%m%d_%H%M).log") &>> "initDB_$(date +%Y%m%d_%H%M).log"
Вывод команды pg_dump
доставляется команде tee
, которая указана в этой форме:
tee file1 file2 &>> logfile
В данном случае аргументы файл1 и файл2 просто являются процессами. tee
запишет вывод предыдущей команды в файл1, файл2, а затем в стандартный вывод. Стандартный вывод перехватывается и перенаправляется в файл журнала (в режиме добавления ).
Вывод, записанный в файл1, доставляется команде psql
, которая устанавливает собственное перенаправление для стандартного вывода и ошибок. То же самое происходит и со второй командой psql
.
Так как имя файла журнала получается с помощью команды date
и имеет лишь минутную точность на уровне -, добавление необходимо для предотвращения возможной перезаписи файла журнала. В качестве альтернативы выходные данные также могут быть доставлены в другие файлы журналов.