Ich habe es mit
funktioniert%code%
Bearbeiten : Ich habe gerade bemerkt, dass der Nutzer seinen eigenen Post beantwortet hat, aber ich werde das hier lassen, falls jemand hier mit einem ähnlichen Problem stolpert. Ich habe herausgefunden, dass es für einige hilfreich ist.
Ich bin darauf gestoßen und habe festgestellt, dass dies die Lösung für Ruby-Skripte ist.
Ruby muss in einer bestimmten Umgebung ausgeführt werden. RVM behandelt dies, indem es eine Ruby-Umgebungsdatei für Ihre spezielle Version von Ruby bereitstellt, die alle erforderlichen Umgebungsvariablen festlegt. Wenn Sie beispielsweise ruby 1.9.3 patch 448 haben, können Sie sich die Quelldatei anschauen, die sich in der Quelldatei befindet:
%Vor%(Hinweis: Meine Installation von rvm war unter %code% , aber Ihre könnte anderswo sein. Verwenden Sie %code% , um herauszufinden, wo Ihr Ruby installiert ist)
Hier können Sie sehen, dass es %code% und einige andere wichtige Umgebungsvariablen setzt. Wenn Sie %code% eingeben, bezieht rvm diese Datei tatsächlich im Hintergrund.
Cron-Ausführungen sind nicht-interaktive Sitzungen, dh sie haben keinen "Live" -Benutzer, der sich vor einer Sitzung angemeldet hat. Wenn Sie dies manuell tun und eine interaktive Sitzung ausführen, ist dies alles für Sie erledigt, aber für eine nicht interaktive Sitzung weiß sie nicht, was die Shell ist oder wo sie den Umgebungspfad finden kann. Vielleicht kann jemand mit mehr Wissen eine technische Erklärung liefern, warum.
Jedenfalls, um das zu umgehen, füge das oben auf deiner crontab hinzu:
%Vor%Dies teilt dem nicht interaktiven Cron-Benutzer mit, welche Shell er verwenden soll, und teilt ihm dann mit, die %code% -Datei zu beziehen. Was ist in der Datei %code% ? Gute Frage, du solltest diese Zeile hinzufügen -
%Vor%(Erneut durch deinen eigenen Ruby-Pfad ersetzen) Grundsätzlich beziehen Sie die Umgebungsdatei, die rvm für Sie bereitgestellt hätte, manuell. Es ist eine Möglichkeit, Cron dazu zu bringen, eine bestimmte Edelsteinumgebung oder Edelsteingruppe zu verwenden.
Es sollte mit diesen beiden Änderungen funktionieren.
Hast du es versucht:
%Vor%Die crontab -l unten scheint nicht zu laufen. Das Skript läuft von Hand läuft gut. Hier ist der Fehler, den ich sehe
%Vor%Und hier ist die Crontab:
%Vor%Berechtigungen sind vollständig geöffnet, ihre ausführbare Datei, ich lege den env Pfad am Anfang der Datei, immer noch keine Würfel.
Habe es gelöst, ich habe zwei Dateien in meinem Code aufgerufen und konnte diese Dateien nicht finden. Ich bearbeite die .rb-Datei, um den vollständigen Pfad einzuschließen, und es funktioniert jetzt einwandfrei. Danke an alle!