Надо учесть, что, возможно, нужные вам сообщения идут не в stdout, а в stderr.
Не знаю, нужен ли Вам & в конце. Думаю, что только для испытаний из консоли, а не для использования в cron.
Кстати, рекомендую поместить команду в отдельный файл в виде:
text
#!/bin/bash
# Строчка выше важна - не удалять
$pgutils_dir/pg_dump -f $dump_file_name -Fc -v $base_name 2> $pgdump_dir/log
# или же: $pgutils_dir/pg_dump -f $dump_file_name -Fc -v $base_name > $pgdump_dir/log
А уже его вызывать по cron, иначе вывод в файл вообще может не сработать (возможно, это единственное, что Вам нужно сейчас сделать)
Хорошо, что читали. Похвально! (Прочтите этот пост до конца, прежде, чем что-то делать )
А так пробовали?
pgutils_dir/pg_dump -f $dump_file_name -Fc -v $base_name 2> $pgdump_dir/log&
Надо учесть, что, возможно, нужные вам сообщения идут не в stdout, а в stderr.
Не знаю, нужен ли Вам & в конце. Думаю, что только для испытаний из консоли, а не для использования в cron.
Да, пробовал. Не помогло. Оператор "&>", который я уже использовал выше, помещает весь вывод программы в файл (в том числе и вывод ошибок).
MageWarrior написал:
Кстати, рекомендую поместить команду в отдельный файл в виде
Изначально уже написан файл скрипта который запускается по cron, в котором определенны все переменные и команды.
При запуске из консоли (по cron тож) скрипт выполняет всё, за исключением передачи выходного потока в файл log.
Пробовал через:
- добавляет в log пустую строку и продолжает выводить сообщения в консоль (в стандартный поток вывода)
Пробовал уже и через cat. Всё одно. Может проблема в том, что вывод сосотоит из нескольких строк?
Разобрался.
Действительно нужно было 2>>.
И ниже в скрипте тож исправить на >> log в замен > log
MageWarrior, спасибо за ссылку :D
Есть альтернатива такого оператора: &>> ?
Этот (&>>) выдает ошибку.
Есть альтернатива такого оператора: &>> ?
Этот (&>>) выдает ошибку.
Какую ошибку? Например, у меня отрабатывает на отлично. Добавляет в файл stderr и stdout. Приведите ошибку и команду, которую выполняете (можно весь скриптик, если он не очень велик :) )
При возникновении ошибки в одной из команд скрипта прекращается его дальнейшее выполнение. Как это исправить?
Такое может случаться при ошибках синтаксиса, возникающих в любой ситуации или только при определенном состоянии данных. В любом случае, Вы должны это как минимум предусмотреть и предупредить с помощью условий. На сколько я помню тонкости bash, try... except здесь нет. Приведите конкретно то, что не получается - от этого и будем отталкиваться.
Хм... странно, однако. Я опробовал различные вариации ошибок - ни на одной скрипт не остановился. Вставьте после каждой команды echo "Что-нибудь" , чтобы точно знать, что выполнение скрипта остановилось. Покажите пример "падения" скрипта, какая ошибка при этом сообщается bash? Возможно, это какие-то параметры самой shell, о которых я не в курсе. Надо почитать...
Наверное, нашел.
Если bash запускать с опцией -e или выполнять в скрипте set -e, то после первой же команды с ненулевым статусом возврата произойдет выход из скрипта. Если Вы не делали ни того, ни другого, то попробуйте принудительно установить противоположный режим с помощью set +eв начале скрипта.