Сценарий оболочки, выполняемый с cron, приводит к разному размеру файла, чем выполняется вручную

У меня есть сервер RHEL, на котором я запускаю базу данных MySQL. У меня есть сценарий Bash, который выполняет mysqldump который создает файл резервной копии. Файл резервной копии, созданный при выполнении скрипта непосредственно в Bash, имеет размер 754259 байт. Если один и тот же скрипт запускается через cron, размер составляет всего 20 байтов.

Насколько мне известно, cron работает с тем же контекстом пользователя, который я использую при входе в систему, чтобы запустить скрипт вручную. Однако, учитывая разницу в размерах, это не кажется истинным.

Почему размеры файлов различны при запуске одного и того же скрипта?

Содержимое сценария оболочки:

 backup_path=/var/custom/db_backups configFile=/var/custom/auth.cnf db_name=[db_name] date=$(date +"%d-%b-%Y") sudo /opt/rh/mysql55/root/usr/bin/mysqldump --defaults-extra-file=$configFile $db_name | gzip -9 > $backup_path/$db_name-$date.sql.gz 

Для редактирования cron:

 sudo crontab -e 

Содержимое файла cron:

 12 21 * * * /var/custom/maint_plan 

Это выполняет скрипт ежедневно в 9:13 вечера.

3 Solutions collect form web for “Сценарий оболочки, выполняемый с cron, приводит к разному размеру файла, чем выполняется вручную”

Команда mysqldump ничего не возвращает, которая передается через gzip и заканчивается пустым файлом gzip. Видеть:

 $ echo -n "" | gzip -9 > test.gz $ stat -c %s test.gz 20 

В результате получается файл размером 20 байт. Таким образом, проблема заключается в команде mysqldump . Так как это crontab root, скрипт работает с привилегиями root. sudo не требуется. Используйте его без sudo . Просто:

 /opt/rh/mysql55/root/usr/bin/mysqldump --defaults-extra-file=$configFile $db_name | gzip -9 > $backup_path/$db_name-$date.sql.gz 

Скрипт, выполняемый через cron, терпит неудачу. 20 байтов – это размер пустого дампа MySQL.

Среда, в которой cron запускает скрипты, очень ограничена. Возможно, он не найдет все необходимые программы. Захватите переменные среды оболочки, в которых вы получаете хороший дамп и переносите это на свой скрипт cron.

  • Описание списка пакетов
  • Сценарий Bash не конвертирует переменные
  • Слияние двух файлов после проверки соответствия некоторых столбцов
  • Как кодировать / декодировать JPG-файл для последовательности int?
  • Как я могу выполнить некоторые команды в сценарии оболочки с `sudo`, а другие нет?
  • Получение pid для процесса ssh, который основывался на себе
  • Я не могу понять результаты скрипта bash
  • Возьмите максимальное значение из столбца и извлеките все строки с не менее чем 20% этого значения
  • Как добавить заголовок лицензии рекурсивно для всех файлов .h и .cpp в каталоге
  • ИЛИ в `expr match`
  • Вставка текста в файл с использованием сценариев bash (НЕ добавление)
  • Interesting Posts

    Как отлаживать принтеры с проблемами USB через CUPS?

    Как сделать скрипт bash спросить вас, хотите ли вы выполнить следующий сегмент (часть)?

    получить бесплатную строку жанра id3-tag, а не только номер жанра в сценарии bash

    альтернатива для команды digest -a sha256 от solaris в linux

    «Sudo service vsftpd» возвращает «Неизвестная работа: vsftpd»

    Как использовать Wayland в Fedora?

    Подключен к VPN, но не удается подключить хосты в удаленной сети

    не удалось открыть X-сервер

    Не удается выйти из полноэкранного режима в терминале Pantheon

    «У пакетов есть неудовлетворенные зависимости», но я больше не хочу устанавливать эти пакеты. Как его очистить?

    Всегда пытайтесь остановить демона при выключении без файла блокировки в / var / lock / subsys /

    Проблема с подключением моста при настройке со сценарием

    Преобразование нескольких групп PNG-файлов в многослойные ICO-файлы

    Как синхронизировать 2 xml-файла?

    Громкий постоянный поклонник Linux Mint 17 с дискретной графической картой

    Linux и Unix - лучшая ОС в мире.