Вам не нужно писать второго бегуна cron (следуя этой логике, вы могли бы также написать третьего бегуна cron). Пожалуйста, будьте проще. Все, что вам нужно сделать, это настроить вашу задачу cron для запуска оболочки bash и заставить эту оболочку bash загружать вашу среду.
Строка shebang в вашем скрипте должна относиться не напрямую к исполняемому файлу ruby, а к ruv rvm:
#!/usr/bin/env ruby
Это указывает сценарию загружать среду и запускать ruby, как в командной строке с загруженным rvm.
Во многих системах, производных от UNIX, crontabs может иметь раздел конфигурации перед фактическими строками, которые определяют задания, которые должны быть запущены. Если это так, вы должны указать:
SHELL=/path/to/bash
Это гарантирует, что задание cron будет порождено из bash. Тем не менее, ваша среда отсутствует, поэтому, чтобы дать команду bash загрузить вашу среду, вам нужно добавить в раздел конфигурации следующее:
BASH_ENV=/path/to/environment (typically .bash_profile or .bashrc)
HOME автоматически выводится из строки / etc / passwd владельца crontab, но вы можете переопределить ее.
HOME=/path/to/home
После этого задание cron может выглядеть так:
15 14 1 * * $HOME/rvm_script.rb
Что если ваш crontab не поддерживает раздел конфигурации. Что ж, вам придется указывать все директивы по окружающей среде в одной строке вместе с самой работой. Например,
15 14 1 * * export BASH_ENV=/path/to/environment && /full/path/to/bash -c '/full/path/to/rvm_script.rb'
Полный блог на эту тему