Наиболее типичная причина «работает в оболочке, но не в cron» заключается в том, что команды, которые вы пытаетесь выполнить, не находятся в PATH. Причина в том, что оболочка, вызванная из cron, не загружает те же файлы, что и ваша оболочка входа.
Исправление: добавьте абсолютный путь к каждой команде, которую вы пытаетесь выполнить.
Второе, что я заметил в вашей команде. Синтаксис для запуска вашей команды даты выглядит не очень переносимым. Измените это, чтобы оно было в обратных кавычках, или запустите, поместите всю свою команду в шеллскрипт (также вы можете использовать его для установки своего пути) и выполните этот скрипт из 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..
person
rasjani
schedule
20.07.2009