Wie man einen crontab-job für ein perl-Skript
Ich habe ein Perl script, welches ich ausführen möchte alle 4 Stunden durch cron. Aber irgendwie ist es nicht ausgeführt werden kann, über cron und läuft einwandfrei, wenn ich es durch Befehl Linie. Im folgenden ist der Befehl, die ich in crontab:
perl -q /path_to_script/script.pl > /dev/null
Auch, wenn ich diesen Befehl ausführen auf Eingabeaufforderung nicht ausführen, aber wenn ich gehe in das Blatt Ordner in path_to_script
und führen Sie die Datei aus, es läuft wunderbar.
Auch, wo die log-Dateien von dieser cron-job angelegt werden, so dass ich Sie einsehen kann?
Ich gehe davon aus, dass Sie die cron-Zeit-Felder-setup ordnungsgemäß, und Sie verlassen Sie sich auf Zweck? I. e. Sie wissen, dass Sie haben, um zu schreiben, wie dieses"* */4 * * * Befehl" in Ihre crontab-Datei-richtig?
Haben Sie eventuell die Umgebungsvariable PATH nicht konfiguriert in deiner crontab. Voller Pfad zum perl-Programm in Ihrem string und sehen, ob es hilft
Was ist
Wenn Sie das Debuggen von cron-Skript, nicht senden Ihre möglicherweise hilfreich, die Ausgabe nach /dev/null.
Haben Sie eventuell die Umgebungsvariable PATH nicht konfiguriert in deiner crontab. Voller Pfad zum perl-Programm in Ihrem string und sehen, ob es hilft
Was ist
perl -q
tun sollen? Ich bekomme die Fehlermeldung Unrecognized switch: -q
Wenn Sie das Debuggen von cron-Skript, nicht senden Ihre möglicherweise hilfreich, die Ausgabe nach /dev/null.
InformationsquelleAutor Deepak | 2012-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie vielleicht ändern Sie das Arbeitsverzeichnis auf "Blatt Ordner".
Versuchen, diese in Ihre crontab-Befehl:
Wrt. log-Dateien. Cron wird mail, die Sie die Ausgabe. Da du aber geschickt stdout nach /dev/null, nur stderr wird zu Ihnen geschickt werden.
Wenn Sie möchten, dass die Ausgabe in einer Protokolldatei gespeichert, dann leiten Sie die stderr/stdout Ausgabe des Skripts in eine Datei, etwa so:
Kann ich nicht beantworten, die aus der hand in einem Kommentar. Ich bin mir sicher, dass eine Google-Suche führt viele Beispiele dafür, genau das zu tun.
Es gibt Antworten auf die E-Mail-Frage bereits auf Stackoverflow. 🙂
InformationsquelleAutor Weston
In der Regel cron senden Sie E-mail mit der Ausgabe des Programms. Wenn Sie es herauszufinden, werden Sie wahrscheinlich wollen, check die Umgebung. Es werden nicht unbedingt die gleichen Umgebung wie Ihre login-shell (da es keine login-shell):
Wenn Euch etwas fehlt, die Sie benötigen, legen Sie es in Ihre crontab:
Wenn Sie brauchen, um zu starten die in ein bestimmtes Verzeichnis, sollten Sie chdir es. Die Start-Verzeichnisses durch einen cron-job wohl nicht, was Sie denken, es ist. Ohne argument, chdir änderungen an Ihrem home-Verzeichnis. Jedoch, manchmal sind diese Umgebungsvariablen, die möglicherweise nicht in Ihrem cron-Sitzung, so ist es wahrscheinlich besser, ein Standard-Wert:
An verschiedenen kritischen Punkte, Sie sollten die Fehler-Ausgabe. Dies ist eine gute Sache, auch in nicht-cron Programme:
Wenn Sie umleiten Dinge zu /dev/null, verlieren Sie alle diese Informationen, die helfen könnten, das problem zu lösen.
InformationsquelleAutor brian d foy
sieht aus wie Sie Sie verpasst haben, die
am Anfang Ihrer perl-Skript, das ist, warum Sie benötigen perl -q, um es auszuführen
sobald Sie Hinzugefügt haben, Sie können führen Sie es direkt von der Befehlszeile aus mithilfe von
perl
auf der Befehlszeile, die Sie nicht brauchen, die shebang-Zeile.stimmt, oder wenn man die shebang in es die Sie nicht brauchen, perl -q 🙂 und dann musst du nicht immer schreiben Sie es jedes mal, wenn Sie rufen Sie das Skript. Plus das Skript aufrufen, final destination cron nicht in der Befehlszeile, wo natürlich könnten Sie schreiben, ein perl-q-einmal mehr, wenn Sie es wünschen. Semantik r uns. 🙂
Sie müssen nie die -q. Es ist nicht ein perl-Schalter.
du hast so Recht -q ist nicht ein perl-Schalter, meine Torheit, kopieren Sie den OP-Beispiel.
InformationsquelleAutor sdjuan
Wenn Sie einen Befehl in Ihrem perl-Programm, ich rate Ihnen, setzen Sie den vollständigen Pfad zu dem Befehl in Ihrem Programm.
Ich versuche zu laden Umwelt, aber es ist nicht mehr hilfreich.
Nach einem betreuen mit einer Kollegin, ich denke, es ist von einer Interaktion zwischen perl und der Systemumgebung.
Beste Grüße,
Moustapha Kourouma
InformationsquelleAutor Moustapha Kourouma