Warum funktioniert #! / usr / bin / env ruby ​​nicht in crontab?

8

Ich habe ruby ​​by rvm (systemweit) installiert und über die normale Konsole korrekt funktioniert und mein Rails-Programm verhält sich korrekt mit rails runner und apache2+passenger .

Jetzt in einer Crontab, ich rief rails runner foo.bar , es gibt auf, sorgfältig untersuchen Sie das Protokoll, das ich sehe:

%Vor%

Wer weiß, warum / usr / bin / env in Crontab nicht funktioniert?

    
c2h2 09.03.2011, 05:03
quelle

3 Antworten

7

Wenn Sie Ruby über rvm installiert haben, ist Ruby wahrscheinlich nicht in / usr / bin. Abhängig davon, wo rvm installiert ist:

%Vor%

Sie haben Ihrer bashrc wahrscheinlich eine Quelle * / rvm hinzugefügt, die das richtige rvm-Ladeskript ist.

    
drewrobb 09.03.2011, 05:13
quelle
4

Ihr Cron erbt Ihre Umgebung nicht. Versuchen Sie, "$ PATH" auf eine Datei zurückzusetzen, um zu sehen, wofür sie eingestellt ist.

Sie könnten auch einfach "PATH = / usr / bin / ruby ​​& amp; & amp; foo.rb"

verwenden     
Cliff 09.03.2011 05:06
quelle
0

Ich hatte ein ähnliches Problem. Cron scheint Befehle standardmäßig auszuführen, ohne die PATH-Einstellungen zu verwenden, die Sie für den Benutzer erwarten würden (wenn er sich als dieser Benutzer anmeldet). Tatsächlich schien es nicht einmal die Standard-PATH-Einstellungen zu verwenden (sei es in / etc / profile oder anderswo).

Ich konnte das Problem mit den folgenden Befehlen finden (der erste ist, wie cron Befehle auszuführen scheint):

  

su -c 'printenv PFAD' userX

Mit Ausgabe: / usr / local / bin: / usr / bin: / bin: / usr / games

  

su -l userX -c 'printenv PFAD'

Mit Ausgabe: /opt/ruby-enterprise-1.8.7-2010.02/bin/:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/usr/local/bin:/usr/bin: / bin: / usr / games

Der erste Befehl scheint die PATH-Variable in keiner Weise aufzufüllen, außer für den Standardstandard. In meinem Fall habe ich es gelöst, indem ich einfach den notwendigen Pfad (REE) zu /etc/login.defs hinzugefügt habe, der standardmäßig so aussieht:

/etc/login.defs:103:ENV_PATH PATH = / usr / lokal / bin: / usr / bin: / bin: / usr / games

    
vdB 11.03.2011 13:29
quelle

Tags und Links