использование фоновой оболочки не рекомендуется в фоновых процессах.
Вы можете использовать этот метод:
0 1 * * 1-7 ~/.rvm/bin/rvm in ~/jobs/rake do rake reports:create >> ~/jobs/logs/cron.log"
также есть rvm cron
команда:
rvm help cron
Я пытаюсь запустить грабли, используя запланированный cronjob. Мой crontab выглядит примерно так:
0 1 * * 1-7 /bin/bash -l -c "cd ~/jobs/rake && rake reports:create >> ~/jobs/logs/cron.log"
Ruby на моем аккаунте предоставляется RVM, который загружается через ~/.bashrc
(до проверки отсутствия взаимодействия):
# load RVM env [[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm # If not running interactively, don't do anything [ -z "$PS1" ] && return # ... rest of logic
Снова и снова, эта задача не запускается, поскольку RVM не загружается при вызове задачи ( /usr/bin/ruby
вместо нее используются системные ), а зависимости от гемов отсутствуют.
Как сделать так, чтобы crontab загружал мою среду оболочки перед выполнением запланированных заданий? Благодарю.
использование фоновой оболочки не рекомендуется в фоновых процессах.
Вы можете использовать этот метод:
0 1 * * 1-7 ~/.rvm/bin/rvm in ~/jobs/rake do rake reports:create >> ~/jobs/logs/cron.log"
также есть rvm cron
команда:
rvm help cron
Wouldn't simply sourcing your ~/.bashrc in the cronjob work?
0 1 * * 1-7 /bin/bash -l -c "source ~/.bashrc; cd ~/jobs/rake && rake reports:create >> ~/jobs/logs/cron.log"
After a little digging following the response from @mpapis, it seems there's a page on the RVM site which elaborates how to use a specific RVM install in a script executed by cron.
Basically you find out which RVM you'd like to use by running this (using ruby 1.9.3 here):
$ rvm env --path -- 1.9.3-p125
Substitute your specific ruby version. This will point to the file that needs to be source
ed so that your desired ruby environment is loaded.
Write the script to be run by your cron job:
#!/bin/bash # the full path to the RVM env you got from running `rvm env ...` source ~/.rvm/environments/ruby-1.9.3-p125 # do stuff ... cd ~/jobs/rake rake reports:create
Make sure you make the file executable:
chmod u+x myjob.sh
0 1 * * 1-7 bash -c "cd ~/jobs && ./myjob.sh"