Вот как я настроил свои задачи cron. У меня есть один, чтобы делать ежедневные резервные копии базы данных SQL (используя rake), и другой, чтобы истекать кэш раз в месяц. Любой вывод записывается в файл log / cron_log. Мой crontab выглядит так:
crontab -l # command to print all cron tasks
crontab -e # command to edit/add cron tasks
# Contents of crontab
0 1 * * * cd /home/lenart/izziv. whiskas.si/current; /bin/sh cron_tasks >> log/cron_log 2>&1
0 0 1 * * cd /home/lenart/izziv.whiskas.si/current; /usr/bin/env /usr/local/bin/ruby script/runner -e production lib/monthly_cron.rb >> log/cron_log 2>&1
Первая задача cron делает ежедневные резервные копии БД. Содержимое cron_tasks следующее:
/usr/local/bin/rake db:backup RAILS_ENV=production; date; echo "END OF OUTPUT ----";
Вторая задача была настроена позже и использует скрипт / runner для истечения срока действия кэша один раз в месяц (lib / month_cron.rb):
#!/usr/local/bin/ruby
# Expire challenge cache
Challenge.force_expire_cache
puts "Expired cache for Challenges (Challenge.force_expire_cache) #{Time.now}"
Полагаю, я мог бы сделать резервную копию базы данных другим способом, но пока это работает для меня:)
Пути к граблям и ruby могут различаться на разных серверах. Вы можете увидеть, где они находятся, используя:
whereis ruby # -> ruby: /usr/local/bin/ruby
whereis rake # -> rake: /usr/local/bin/rake