Соответствующий формат для mysqldump динамического имени файла в кроне?

у Pete Goodliffe есть ряд на поблочное тестирование потоковых код.

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

6
задан Mobius 20 July 2009 в 18:41
поделиться

2 ответа

Что насчет чего-то вроде этого для "командной" части crontab:

mysqldump --host=HOST --user=USER --password=PASSWORD DATABASE TABLE | gzip > /tmp/table.`date +"\%Y-\%m-\%d"`.gz

Что изменилось из OP, так это экранирование формата даты:

date +"\%Y-\%m-\%d"

(И я использовал обратные кавычки - - но это должно иметь большое значение)

(Другим решением было бы поместить вашу исходную команду в сценарий оболочки и выполнить эту из crontab вместо команды - вероятно, было бы легче читать / write ^^)

17
ответ дан 8 December 2019 в 13:48
поделиться

Наиболее типичная причина, по которой "работает в оболочке, но не в cron", заключается в том, что команды, которые вы пытаетесь выполнить, не находятся в PATH. Причина в том, что оболочка, вызванная из cron, не загружает те же файлы, что и ваш оболочка входа в систему.

Исправление: добавляйте абсолютный путь к каждой команде, которую вы пытаетесь выполнить.

Второе, что я заметил в вашей команде. Синтаксис для запуска вашей команды date выглядит не очень переносимым. Измените это на обратные кавычки или запустите, поместите всю вашу команду в shellscript (также вы можете использовать его для установки своего пути) и выполните этот скрипт из cron ..

РЕДАКТИРОВАТЬ:

Во время написания моего исходного ответа в моей раскладке клавиатуры не было обратных кавычек, поэтому проверьте, что написал Паскаль.

И пример того, что вы могли бы сделать с помощью сценария оболочки:

Скопируйте следующее в /usr/local/bin/dumptable.sh

#!/bin/sh
/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD DATABASE TABLE | /bin/gzip > /tmp/table.`/bin/date +"\%Y-\%m-\%d"`.gz

и затем поместите /usr/local/bin/dumptable.sh в cron ..

0
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: