Как проверить запись в crontab? - PullRequest
3 голосов
/ 10 июня 2010

У меня есть запись в моем crontab, которая выглядит так:

0 3 * * * pg_dump mydb | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz

Этот скрипт отлично работает, когда я запускаю его из оболочки, но, похоже, он не запускается каждую ночь. Я предполагаю, что с разрешениями что-то не так, возможно, crontab работает под другим пользователем или что-то в этом роде. Как я могу отладить это? Я являюсь средой общего хостинга (WebFaction).

Ответы [ 4 ]

9 голосов
/ 10 июня 2010

Вам нужно экранировать символы "%" в записях crontab с обратной косой чертой - см. Справочную страницу crontab (5).У меня была точно такая же проблема.

Например:

0 7 * * * mysqldump usblog | bzip2 -c > usblog.$(date --utc +\%Y-\%m-\%dT\%H-\%M-\%SZ).sql.bz2

Вы не получаете электронные письма с ошибками cron?Даже если вы поместите «MAILTO=you@example.com» в crontab?

Вам также может понадобиться установить PATH в вашем crontab, если pg_dump или gzip не находятся в системном пути по умолчанию (поэтому используйтевведите pg_dump "чтобы проверить, где они находятся, crontab обычно запускает команды только в / bin или / usr / bin по умолчанию)

2 голосов
/ 10 июня 2010

Когда вы говорите, что это не работает, что вы имеете в виду?Файл не генерируется вообще или он пустой?

Если ваша система настроена правильно, crontab должен отправить вам электронное письмо, если ваша команда сгенерировала какой-либо вывод.проверить, работает ли crontab.Он будет касаться файла каждую минуту.

* * * * * touch /tmp/foo

И проверять ваши пути, как упоминал Джеймс.

2 голосов
/ 10 июня 2010

Всегда используйте полные пути в записях crontab. Например, /usr/bin/gzip. Вам также нужно сделать это для pg_dump и date.

1 голос
/ 10 июня 2010

Если это что-то вроде / etc / crontab, убедитесь, что пользователь включен:

...