【发布时间】:2011-08-15 16:39:10
【问题描述】:
我的 ruby 在 /usr/local/bin 中。 whenever 找不到它,并且在我的 cron 文件顶部设置 PATH 也不起作用,我认为是因为无论何时在新的 bash 实例中运行命令。
# 这不起作用 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin # 每当生成任务时开始: foo 0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\' '' # 每当生成任务时结束: foo我如何知道我的 ruby 二进制文件在哪里?从 /usr/bin 建立符号链接对我来说似乎很麻烦,但我想这可能是唯一的选择。
This question 在 schedule.rb 中提供env :PATH, "..." 作为解决方案,但是(a)我在文档中的任何地方都找不到该功能的任何文档(b)它似乎没有解决提问者的问题(不幸的是,我只是尝试它需要不平凡的周转时间)。
更新其实it is in the bottom of this page,我现在就试试。
更多信息
- 我无法修改 cron 命令,因为它是由无论何时生成的
- 我验证了如果我使用
bash -l创建一个新的 bash shell,/usr/bin/env 会发现 ruby 就可以了 - 我刚刚在该用户的命令行中尝试了 cron 中的确切命令(从 /bin/bash 开始),它成功了。
所以,这很神秘……
【问题讨论】:
-
你说你在 /usr/local/bin 中有 ruby,但你没有将它包含在你的 PATH 中?添加 :/usr/local/bin 应该可以工作(我检查了我的一个 cron 文件,它完全一样)
标签: ruby bash cron sh whenever