Wie führe ich eine Rake-Aufgabe in cron unter einem anderen Benutzer aus?

1932

Ich versuche, ein Sicherungsskript auf Ubuntu auszuführen. Mein Problem ist, dass ich versuche, dies mit dem Postgres-Benutzerkonto zu tun, das ich auf Ubuntu eingerichtet habe. Ich bin der Meinung, dass es das Beste ist, wenn dieses Konto die Cron-Jobs betreibt, da es sich eher um ein allgemeines Konto handelt. Sollte ich eines Tages das Unternehmen verlassen, müssen sie sich nicht um irgendwelche Cron-Jobs kümmern, die zerstört werden könnten, wenn sie mein Benutzerkonto zerstören Auf dem Server habe ich jedoch Schwierigkeiten, diese Funktion zum Laufen zu bringen, hauptsächlich, weil mein Postgres-Benutzerkonto nicht in der Lage ist, dieselbe Ruby-Umgebung zu sehen (denke ich).

Ich verwende rvm, um meine Ruby-Umgebung zu steuern, und nachdem ich den direkten Pfad zu Bündel hinzugefügt habe, der sich unter der Installation von rvm befindet, erhalte ich immer noch einen Fehler. Ich bin an einem Punkt, an dem ich nicht weiß, was ich sonst tun soll.

Error:

/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 zu Hause ist für solche Situationen nicht gut. Es wäre besser, wenn Sie stattdessen rvm systemweit installieren, sodass alle Benutzer standardmäßig dieselbe Umgebung haben. Casper vor 11 Jahren 0
@Casper Ich habe überlegt, die Multi-User-Installation von Rvm durchzuführen, habe aber gelesen, dass es sich hierbei um Sicherheitsfragen handelt. Als Sicherheitsexperte nicht genug zu sein, um mich dazu zu bringen, diesen Weg nicht zu gehen. vor 11 Jahren 0

2 Antworten auf die Frage

3
taro

Es gibt zwei Möglichkeiten:

Fügen Sie zunächst einen cron-Job für diesen Benutzer hinzu:

crontab -e -u otheruser 

Zweitens - Verwenden Sie su / sudo, um den Befehl unter einem anderen Konto auszuführen.

sudo -u otheruser command 

Vergewissern Sie sich, dass Sie alle erforderlichen Umgebungsvariablen definiert haben - wie PATH, GEM_HOME, GEM_PATH.

Das Hinzufügen der Umgebungsvariablen hat es für mich getan ... Danke @taro vor 11 Jahren 0
1
mpapis

Here is the basic documentation for configuring cron:

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

There is also a new way:

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