【发布时间】:2011-04-15 17:55:57
【问题描述】:
我大致按照这组说明第一部分中概述的模式安装和配置了 RVM:http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server
基本上,这意味着没有预构建系统 ruby(所有 ruby 安装都由 RVM 管理)并且 RVM 是在系统范围内安装的,而不是附加到特定用户(/usr/local/rvm 处的文件),因此所有用户在rvm 组可以使用相同的已安装 gem 访问相同的红宝石。
以这种方式设置系统的一个问题是必须在 shell 会话中设置 rvm 环境,然后才能使用 ruby。对于所有 rvm 用户,我将其放在他们的 .bashrc 中:source "/usr/local/rvm/scripts/rvm"。这适用于 ssh 会话。
问题在于不执行 .bashrc 的 cron 作业。上面的 rvm 脚本 (/usr/local/rvm/scripts/rvm) 比设置一些环境变量要复杂得多,所以我实际上想在文件中的每个作业之前运行这个命令。
当然,我可以手动完成,就像这样:
1 2 * * * source "/usr/local/rvm/scripts/rvm"; /do/some/cron/job/1
3 4 * * * source "/usr/local/rvm/scripts/rvm"; /do/some/cron/job/2
5 6 * * * source "/usr/local/rvm/scripts/rvm"; /do/some/cron/job/3
7 8 * * * source "/usr/local/rvm/scripts/rvm"; /do/some/cron/job/4
但我更喜欢这样做:
[execute] source "/usr/local/rvm/scripts/rvm"
1 2 * * * /do/some/cron/job/1
3 4 * * * /do/some/cron/job/2
5 6 * * * /do/some/cron/job/3
7 8 * * * /do/some/cron/job/4
显然,上述语法不起作用。但是,有什么方法可以让它工作吗? cron 手册页和文档在这里没有太大帮助。但是有一些技巧或标准方法可以实现这一点吗?
如果重要的话,我正在运行 Ubuntu 10.10 (Maverick Meerkat)。
【问题讨论】: