Как запустить грабли в cron под другим пользователем?

1869

Я пытаюсь запустить скрипт резервного копирования в Ubuntu. Моя проблема в том, что я пытаюсь сделать это, используя учетную запись пользователя postgres, которую я настроил в Ubuntu. Я считаю, что лучше всего использовать эту учетную запись для заданий cron, потому что это скорее обычная учетная запись, и если я когда-нибудь уйду из компании, им не придется беспокоиться о любых заданиях cron, которые могут быть уничтожены, если они уничтожат мою учетную запись пользователя. на сервере, однако, мне трудно заставить это работать, главным образом, потому что моя учетная запись пользователя postgres не может видеть ту же самую среду ruby ​​(я думаю).

Я запускаю rvm для управления моей средой ruby ​​и после добавления прямого пути к bundle, который находится в установке rvm, я все еще получаю сообщение об ошибке. Я нахожусь в точке, в которой я не знаю, что еще делать.

Ошибка:

/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>' 
2
домашний рвм не подходит для подобных ситуаций. Было бы лучше, если бы вместо этого вы установили rvm для всей системы, чтобы все пользователи имели одинаковую среду по умолчанию. Casper 11 лет назад 0
@Casper Я думал о том, чтобы сделать многопользовательскую установку rvm, но прочитал, что это были проблемы с безопасностью. Не быть экспертом по безопасности, что было достаточно, чтобы я не пошел по этому пути. 11 лет назад 0

2 ответа на вопрос

3
taro

Есть два варианта:

Первое - добавьте задание cron для этого пользователя:

crontab -e -u otheruser 

Второе - используйте su / sudo для выполнения команды под другой учетной записью.

sudo -u otheruser command 

Убедитесь, что вы определили все необходимые переменные среды - такие как PATH, GEM_HOME, GEM_PATH.

Добавление переменных окружения - вот что сделало это для меня ... спасибо @taro 11 лет назад 0
1
mpapis

Вот основная документация по настройке cron:

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

Существует также новый способ:

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

Похожие вопросы