script für cron.täglich

Muss ich mein Java-Programm läuft auf einem linux-Rechner einmal am Tag. So habe ich eine einfache Datei mit nur einer Zeile:

java -jar /opt/location/my_jar.jar

und steckte es in die/etc /cron.täglich, vorausgesetzt, es würde einmal am Tag ausgeführt. Aber es läuft nicht bei allen. Ich habe versucht beide zu haben .sh-Erweiterung, oder einfach nur den Namen der Datei ohne Erweiterung. Noch, kein Glück.

Ich es gegoogelt und ich bin immer ziemlich viel widersprüchliche info. Kann mir bitte jemand helfen?

EDIT:

Ich bin fasst der Ort, wo es jetzt ist, basiert auf den Antworten von Satish und Mithrandir.

1.Ich habe die run_conversions script mit vi, um über das problem mit dem Ende der Zeile-Zeichen unter windows. Das Skript wird jetzt

#!/bin/sh
/usr/bin/java -jar /opt/location/my_jar.jar

2.Ich habe es in /etc/cron.von Stunde zu Stunde.

3.Die überprüfung der log unter /var/log/cron, die ich bin zu sehen das es ab run_conversions und finishing run_conversions jede Stunde. So weit So gut.

4.Aber es scheint nicht, wie meine jar-Datei ausgeführt wird. Ich weiß das, weil, wenn es richtig läuft, sollte es aktualisieren einer Datenbank, und die Datenbank wird nicht aktualisiert.

5.Hier ist die merkwürdige Sache: bei mir läuft cron.stündlich manuell, aber das aufrufen

run-parts /etc/cron.hourly

die jar-Datei ist der hit propertly, und die Datenbank aktualisieren.

Um es zusammenzufassen: wenn Sie es durch run-parts, es funktioniert. Beim verlassen es stündlich von selbst, gibt es nicht.

Irgendwelche Ideen?

EDIT 2:

Folgenden Rat von Satish, Mithrandir und vahid änderte ich meine run_conversions_loc wie folgt Aussehen:

#!/bin/bash
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bexport SHELL=/bin/bash
/usr/bin/java -jar /opt/tf/conversions/aff_networks2.jar > /opt/tf/conversions/runconversions.txt

Ich entfernt das Skript von cron.stündlich und ergänzt diese Zeile in die crontab:

*/10 * * * * /opt/tf/conversions/run_conversions_loc

Das script jetzt läuft alle 10 Minuten und ist eingetragen in das cron-log wie diesen:

Feb 24 09:30:01 backsome CROND[7933]: (root) CMD (/opt/tf/conversions/run_conversions_loc)

Bisher sieht es gut aus. Aber die Datenbank, die Sie aktualisieren sollten -- nicht mehr aktualisiert.

Suchen, tiefer in es, die jar-Datei, aff_networks2.jar auf der Suche nach einem ftr.properties Datei in das lokale Verzeichnis -- das gleiche Verzeichnis, wo es langgeht. Die Datei existiert in diesem Verzeichnis. Es ist aber nicht richtig gelesen. Ich weiß das, weil in der Ausgabe-Datei, runconversions.txt der Wert, der gelesen werden soll, aus der Datei mit den Eigenschaften null ist.

Zwei Dinge, um das Bild zu vervollständigen:

  1. Alles, was im Umbauten-Verzeichnis hat 777 Berechtigungen. Ich weiß, es wird nicht empfohlen, um solche erweiterten Berechtigungen, aber ich wollte sicherstellen, dass (wenigstens zu versuchen) es ist nicht das Problem.

  2. Wenn ich das Skript aus der shell durch Aufruf ./run_conversions_loc es läuft, findet die properties-Datei und die Datenbank aktualisiert. Ich bin eingeloggt als root auf der shell, und ich habe auch alle relevanten Dateien, die als root installiert und als root die Zeile für den Aufruf des Skript in die crontab.

Irgendwelche Ideen, warum nicht cron Auslesen der properties-Datei?

  • haben Sie überprüfen Sie /var/log/cron ?
  • Danke für den Tipp, Satish. Ich habe es jetzt und mein Skript erwähnt ist nicht da, obwohl jetzt habe ich es sowohl in der cron.daily und cron.stündlich, und folgte Mithrandir folgenden Ratschläge. Keine Ahnung, was Los ist???
  • Muss ich einen "Installation" von meinem script, wenn ich mich fallenlassen es in der cron.daily oder cron.stündlich?
  • erstellen Sie ein shell-Skript wie @Mithrandir sagte, und führen Sie den cron manuell auf Befehl wie: run-parts /etc/cron.täglich und überprüfen Sie Ihre log
  • Danke, Satish. Ich Tat was Sie sagte und ich bin mit cron.stündlich manuell und immer diese Fehlermeldung: Unable to access (jar-Datei) /opt/location/myjar2.jar. Die Datei existiert dort, und execute-Berechtigungen für Besitzer und Gruppe. Ich bin als root angemeldet. Warum nicht laufen?
  • hast du das ausführen-Befehl manuell auf der Kommandozeile?
  • Ja, habe ich. Etwas seltsames passiert. Ich habe auch versucht, führen Sie das Skript direkt aus dem Ort, wo es-und die jar-Dateien-sind auf, und ich bin immer ein Nicht auf (jar-Datei) myjar2.jar. Die Sache ist die, es funktionierte gestern bei mir läuft es wie folgt. Sieht aus wie ich bin in ein totales Chaos.
  • Hinzufügen eine weitere Sache: wenn ich den Zugriff auf die jar-Datei direkt von der Kommandozeile java-jar myjar2.jar alles funktioniert einwandfrei.
  • Und ich denke, eine Sache noch: wenn ich das hinzufügen dieser Zeile #!/bin/sh, damit das Skript sieht aus wie Mithrandir ist unten, ich bin immer ein "/bin/sh^M: bad interpreter: No such file or directory" - Fehler. Wenn ich entfernen Sie die Zeile, ich bin immer "Unable to access (jar-Datei) myjar2.jar" Fehler.
  • Zum Abschluss der info: wenn ich laufen run-parts /etc/cron.täglich wie Satish empfohlen den cron läuft mein script, und es zeigt in der log, und die jar Datei ist nicht zugänglich-wie ich ausführlich in den Kommentaren oben.
  • was ist Ihr Betriebssystem? und shell verwenden? versuchen #!/bin/bash eine weitere Sache, die auch die Verwendung der vollständigen Pfad anstelle von java. verwenden Sie /usr/bin/java-überall dort, wo Ihre java gelegen.
  • Gleichen Fehler mit #!/bin/bash: /bin/bash^M: bad interpreter: No such file or directory. Ich geändert vollständigen Pfad für java, /usr/bin/java, aber kein Glück. Das OS ist eine linux durch rackspace.
  • Ah! habe es Ihr editor-Problem, versuchen Sie es mit diesem Befehl: dos2unix scriptname.sh überprüfen Sie auch weitere Details hier stackoverflow.com/questions/2920416/...
  • Überprüfen Sie meine komplette Antwort!!! in den Antwort-Abschnitt

InformationsquelleAutor Eddy | 2013-02-21
Schreibe einen Kommentar