Ok, also ich habe mein Skript gemacht, ich habe es abgelegt, /etc/cron.hourlydann habe ich chmod 777die Datei, aber es wird nicht (automatisch) ausgeführt. Wenn ich es manuell ausführe, funktioniert es einwandfrei. Muss ich noch etwas tun?
Ok, also ich habe mein Skript gemacht, ich habe es abgelegt, /etc/cron.hourlydann habe ich chmod 777die Datei, aber es wird nicht (automatisch) ausgeführt. Wenn ich es manuell ausführe, funktioniert es einwandfrei. Muss ich noch etwas tun?
Antworten:
Warum nicht crontab (/ etc / crontab) verwenden und im Stundenfeld * / 1 verwenden? Ich habe dies verwendet, um alle 5 Minuten ein Skript auszuführen, und es funktioniert gut:
# m h dom mon dow user command
* */1 * * * user command
cron.dailyund Freunde funktioniert ein bisschen besser, wenn die Maschine nicht die ganze Zeit läuft, weil Anacron versucht, den richtigen Zeitplan zu approximieren, während Cron sie einfach nicht laufen lässt, wenn die Maschine nicht die ganze Nacht läuft. Für Stundenjobs ist dies wahrscheinlich nicht so wichtig.
/etc/crontab : zu sehen istcron.daily , cron.weeklyund cron.monthly stündlich mit anacron (sofern verfügbar) ausführen run-parts --report /etc/cron.hourly.
Einträge in cron.hourlywerden vom Laufteilemechanismus ausgeführt ( man run-partsfür weitere Informationen). Und run-partsist wählerisch, welche Dateinamen es für gültig hält.
Wenn Sie Ihrem Skript beispielsweise eine Erweiterung zuweisen, wird es ungültig und der Job wird nicht ausgeführt. [a-zA-Z0-9_-]sind die gültigen Zeichen, also das '.' macht es ungültig.
Testen Sie beim Hinzufügen eines Jobs zu /etc/cron.hourly(oder .daily, .weeklyusw.) immer danach, dass er run-partstatsächlich ausgeführt wird, indem Sie den folgenden Befehl eingeben:
run-parts --test /etc/cron.hourly
Wenn durch Ausführen dieses Befehls Ihre Datei angezeigt wird, bedeutet dies, dass sie funktioniert hat. Andernfalls ist Ihr Dateiname ungültig, wenn nichts angezeigt wird.
Wie hieß dein Drehbuch?
giving your script an extension will make it invalid and result in the job not being run
--report, um die Skripte tatsächlich auszuführen.
Ihr Problem liegt wahrscheinlich an den zu offenen Berechtigungen, mit denen jeder Ihre Datei bearbeiten kann. Versuchen Sie es 755stattdessen.
Ein Blick in die Cron-Einträge in Ihrer Syslog-Ausgabe sollte dies bestätigen.
DaithiFs Antwort sollte die richtige sein.
Auch mein Skript hatte nicht #!/bin/bashin der ersten Zeile. Obwohl das Skript mit der Befehlszeile ausgeführt werden konnte, wurde es mit der run-partsMeldung "Exec format error" abgelehnt.
Durch Ändern des Dateinamens von scriptname.shin scriptnameund Hinzufügen der #!/bin/bashersten Zeile konnte mein Skript stündlich ausgeführt werden.
Wenn du rennst
crontab -l
Ist diese Aufgabe auf der Liste?
Wenn nicht, füge es hinzu
crontab -e
füge diese Zeile hinzu
0 * * * * yourScript
Wenn es in dieser Liste enthalten ist, versuchen Sie, den Pfad der Programmiersprache oben in Ihrem Skript einzufügen
Beispiel:
bash: #!/bin/bash
Diese 2 Dinge haben meine Probleme immer gelöst :)