pg_dump не работает как задание cron в одном скрипте, но не в другом

У меня есть два задания cron на моем сервере AWS (запущено через crontab -e) вызывать pg_dump на конкретных базах данных.

Два сценария идентичны, за исключением целевой базы данных, для которой они создаются ($PG_SRC_DB). Один терпит неудачу в pg_dump Команда, но не выводит ни ошибок, ни журналов:

PGPASSWORD=$PG_SRC_PASSWORD $PG_DUMP_PATH --no-owner $PG_SRC_DB -h $PG_SRC_HOST -p $PG_SRC_PORT -U $PG_SRC_USER > dump.sql

Я знаю это, потому что я переправил все stderr и stdout в /tmp/cron.log и я получаю ошибку:

mv: cannot stat 'dump.sql': No such file or directory

Эта команда происходит после того, как я запустил pg_dump и dump.sql файл должен был быть создан, но не удается, потому что pg_dump терпит неудачу

Я отлаживал в течение нескольких часов и сделал следующее:

  • перенаправил stderr в стандартный вывод в журнал ошибок
  • вызывается export <PGVAR> за PGPASSWORD, PGUSER, PGHOST, а также PGDATABASE
  • установите мой PATH равным моему PATH, когда я запускаю скрипт вручную в терминале
  • использовать абсолютный путь к pg_dump
  • использование #!/bin/bash -l оболочка входа
  • выход pg_dump ошибка в файл с ... > dump.sql 2> error.log

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

2 ответа

Как правило, это происходит потому, что значения переменных среды различны для терминала и cronjobs. Вы можете попробовать импортировать терминальную среду в скрипт. Допустим, вы запускаете скрипт под пользователем root. Попробуйте добавить строку вверху скрипта.

#!/bin/bash
. /root/.profile

Я не совсем уверен, что случилось, но это работает сейчас. Я сделал эти две вещи:

  1. chmod +x pg_backup.sh - Я уже сделал это, и скрипт работал в cron, так как я мог получить некоторый вывод в журналах
  2. бегать dos2unix в файле для преобразования любого CR или CRLF в LF - я не уверен, как это решит проблему, так как я написал сценарий в Vim на Mac
Другие вопросы по тегам