у Pete Goodliffe есть ряд на поблочное тестирование потоковых код.
Это твердо. Я беру более легкий выход и пытаюсь сохранить код поточной обработки абстрагированным от фактического теста. Pete действительно упоминает, что способ, которым я делаю это, является неправильным, но я или разобрался в разделении, или я только что был удачлив.
Что насчет чего-то вроде этого для "командной" части 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 ^^)
Наиболее типичная причина, по которой "работает в оболочке, но не в 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 ..