如何在不同用户下在 cron 中运行 rake 任务?

如何在不同用户下在 cron 中运行 rake 任务?

我正在尝试在 ubuntu 上运行备份脚本。我的问题是我尝试使用我在 ubuntu 上设置的 postgres 用户帐户来执行此操作。我认为让这个帐户运行 cron 作业是最好的,因为它更像是一个通用帐户,如果我有一天离开公司,至少他们不必担心如果他们破坏我在服务器上的用户帐户,任何 cron 作业可能会被破坏,但是,我很难让它工作,主要是因为我的 postgres 用户帐户无法看到相同的 ruby​​ 环境(我认为)。

我正在运行 rvm 来控制我的 ruby​​ 环境,在将直接路径添加到 rvm 安装下的 bundle 后,我仍然收到错误。我现在不知道还能做什么。

错误:

/home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
from /home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /home/my_personnel_account/.rvm/gems/ruby-1.9.3-p194@global/bin/bundle:22:in `<main>'

答案1

有两个选项:

首先 - 为该用户添加 cron 作业:

crontab -e -u otheruser

第二步 - 使用 su/sudo 在其他帐户下执行命令。

sudo -u otheruser command

确保您定义了所有必需的环境变量 - 例如 PATH、GEM_HOME、GEM_PATH。

答案2

以下是配置 cron 的基本文档:

https://rvm.io/integration/cron/

还有一种新方法:

https://github.com/wayneeseguin/rvm/blob/master/help/cron.md

相关内容