Ok, also ich habe mein Skript gemacht, ich habe es abgelegt, /etc/cron.hourly
dann habe ich chmod 777
die 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.hourly
dann habe ich chmod 777
die 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.daily
und 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.weekly
und cron.monthly
stündlich mit anacron (sofern verfügbar) ausführen run-parts --report /etc/cron.hourly
.
Einträge in cron.hourly
werden vom Laufteilemechanismus ausgeführt ( man run-parts
für weitere Informationen). Und run-parts
ist 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
, .weekly
usw.) immer danach, dass er run-parts
tatsä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 755
stattdessen.
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/bash
in der ersten Zeile. Obwohl das Skript mit der Befehlszeile ausgeführt werden konnte, wurde es mit der run-parts
Meldung "Exec format error" abgelehnt.
Durch Ändern des Dateinamens von scriptname.sh
in scriptname
und Hinzufügen der #!/bin/bash
ersten 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 :)