Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 15:14:29
Servus Leute,
ich habe auf einem neuen System angefangen, eine crontab zu editieren. --> crontab -e
Nachdem ich die gewünschten Änderrungen vorgenommen habe, dachte ich eigentlich das die enthaltenen Einträge nun ausgeführt werden. Dem ist aber nicht so.
Crontab sieht wie folgt aus:
Code: Alles auswählen
crontab -l
# m h dom mon dow command
# Min Stunde Tag Monat Wochentag Commando
# Ueberpruefen auf eingehende ...
2 * * * * /usr/local/bin/scripts/script1.sh
#
1 * 1-7 * * /usr/local/bin/scripts/script2.sh
Wo ist der Fehler?
Danke für Hilfe.
Eroj
Zuletzt geändert von
eroj am 15.09.2010 09:18:00, insgesamt 2-mal geändert.
-
michaels
- Beiträge: 1164
- Registriert: 29.03.2009 18:12:25
Beitrag
von michaels » 14.09.2010 15:21:42
eroj hat geschrieben:Wo ist der Fehler?
Keine abschließende Leerzeile!
Viele Grüße
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 15:28:20
Ist keine enhalten.
Die letzte Zeile entspricht der oben geposteten.
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 14.09.2010 15:30:27
Hi,
Ist keine enhalten.
eben *ggg
In der Crontab sollte am Ende eine Leerzeile vorhanden sein.
Quasi so
Code: Alles auswählen
crontab -l
# m h dom mon dow command
# Min Stunde Tag Monat Wochentag Commando
# Ueberpruefen auf eingehende ...
2 * * * * /usr/local/bin/scripts/script1.sh
#
1 * 1-7 * * /usr/local/bin/scripts/script2.sh
-
michaels
- Beiträge: 1164
- Registriert: 29.03.2009 18:12:25
Beitrag
von michaels » 14.09.2010 15:34:14
@Snoopy
MUSS sollte besser passen
Beim nächsten mal drücke ich mich etwas deutlicher aus
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 15:41:47
Ich habe nun eine Leerzeile eingefügt.
Wenn ich mich nicht irre, sollte er bei folgender Zeile:
1 * 1-7 * * /usr/local/bin/scripts/script2.sh
Doch jede Minute das Skript ausführen? Tut er leider nicht.
Das ist die komplette crontab:
# m h dom mon dow command
# Min Stunde Tag Monat Wochentag Commando
# Ueberpruefen auf eingehende SMS
2 * * * * /usr/local/bin/scripts/script1.sh
#
1 * 1-7 * * /usr/local/bin/scripts/script2.sh
-
michaels
- Beiträge: 1164
- Registriert: 29.03.2009 18:12:25
Beitrag
von michaels » 14.09.2010 15:44:49
Doch du irrst dich *gg*
Damit würde er jede Stunde um XX:01 das Skript ausführen und das auch nur an den Monatstagen 1-7 (wir haben jetzt 14).
Was möchtest du denn?
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 14.09.2010 15:45:52
Hi,
nicht ganz.
Schau mal unter [1], eine kleine Crontab/AT-Job Erklärung
Wenn Dein Skript z.B. jeden Tag, alle 15 Minuten laufen soll
Jeden Tag, jede Minute (wovon ich abraten will!)
[1]
http://debianforum.de/forum/viewtopic.php?f=29&t=32060
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 15:52:16
Mein Fehler. Funktioniert.
Danke soweit.
Warum würdest du davon abraten?
Ich plane ein Script einzusetzen, was beim Eingang einer SMS etwas ausführen soll.
Dafür soll das Skript im Abstand von 1-3 Minuten überprüfen ob eine SMS eingegangen ist.
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 14.09.2010 16:01:10
Hi,
nun ein Job der jede Minute rennt, kann sich u.U. selbst überholen...
Was ich damit meine (angenommener Zustand):
Dein Rechner hat Stress mit irgendwelchen Applikationen und "rödelt" heftig (CPU Last hoch, viel I/O etc).
Dein Cronjob wird u.U. mit dem was er tut nicht innerhalb von einer Minute fertig und dann kommt der nächste Cronjob...
Deswegen bin ich bei solchen Sachen sehr vorsichtig und rate lieber dazu, die Skripte nicht ganz so oft laufen zu lassen.
Klaro, Du kannst das machen...kein Ding, aber die o.g. Situation solltest Du dann immer im Hinterkopf haben.
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 16:10:57
Alles klar.
Ich Danke Dir/Euch.
Wieso müss überhaupt eine Leerzeile vorhanden sein?
EDIT:
Kann es sein, dass ein Script welches als angemeldeter Benutzer root in einer Shell funktioniert (händische Ausführung), also cron nicht mehr funktioniert?
Folgendes Szenario.
Ich habe ein Script, welches überprüft ob eine SMS eingegangen ist. Anschließend holt er sich aus dieser SMS den Absender, guckt ob dieser autorisiert ist. Wenn ja, wertet er den Inhalt aus. Entsprich dieser einem bestimmten Zeichensatz, wird ein Kommando ausgeführt.
In der Shell klappt dieses. Wenn das ganze also cron läuft, scheint es nicht zu funktionieren. Weil keine Log Datei angelegt wird. Diese wird angelegt, wenn das Befehl erfolgreich ausgeführt wurde. Leider weiß ich nicht wo ich ansetzen soll bzgl. des Problems
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 14.09.2010 16:23:05
Hi
Kann es sein, dass ein Script welches als angemeldeter Benutzer root in einer Shell funktioniert (händische Ausführung), also cron nicht mehr funktioniert?
Ja das kommt durchaus oft vor.
Immer wenn die Person nicht bedenkt, dass ein Cronjob etwas komplett Anderes ist als wenn man dasselbe Skript aus der Shell ausführt.
Bedenke:
Cron hat nicht das Environment wie der User auf der Shell.
Der kennt u.U. die Befehle garnicht (absolute Pfadangabe oder man gibt ihm das Environment mit).
Siehe auch [1]
[1]
http://debianforum.de/forum/viewtopic.php?f=32&t=101520
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 14.09.2010 16:28:39
Hi,
daran habe ich auch bereits gedacht.
Deswegen hatte ich die Umgebungsvariablen dem Skript hinzugefügt.
Einwandfrei
Ich bin nun etwas unsicher...
Deine Path Angabe lautet
Muss das nicht mit einem < : > abgeschlossen werden?
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 14.09.2010 16:37:25
Ich meine auch.
Habe das ganze korrigiert und nochmal getestet. Leider mit dem selbigen Resultat.
-
underliner
- Beiträge: 42
- Registriert: 13.04.2009 08:17:54
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Verden - Nds.
Beitrag
von underliner » 14.09.2010 23:54:58
Hallo eroj,
vor einiger Zeit hatte ich auch Probleme beim Ausführen von Scripten in Verbindung mit einer crontab. Dabei habe ich herausgefunden, wie hier bereits angesprochen die letzte Zeile sollte eine Leerzeile / Kommentarzeile sein. Desweiteren sind Path-Variablen der Bash und von Cron nicht identisch / schrottig?. Die Befehle werden also nicht gefunden. Ich habe mir deshalb bei der crontab angewöhnt, die absoluten Pfade bei den Befehlen mit anzugeben und habe seither keine Probleme mehr.
An deinem Beispiel:
*/1 * * * * /bin/sh /usr/local/bin/scripts/script2.sh
Gruß underliner
Google is my teacher !!!
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 15.09.2010 08:28:12
Hat leider auch nichts gebracht.
Werde da nicht schlau drauß. Es wird alles aus dem Skript erledigt. Nur scheinbar wird der Befehl nicht ausgeführt. Kann ich das irgendwie debuggen? Um zu überprüfen wo es hängt?
-
jmittendorf
- Beiträge: 64
- Registriert: 07.11.2007 08:56:30
Beitrag
von jmittendorf » 15.09.2010 08:42:51
Snoopy hat geschrieben:
In der Crontab sollte am Ende eine Leerzeile vorhanden sein.
Die Leerzeile ist bei mir zwar enthalten, habe ich aber bisher nicht darauf geachtet, deshalb was bewirkt diese Leerzeile?
Gruß Jörg
-
eroj
- Beiträge: 199
- Registriert: 12.08.2007 22:09:45
Beitrag
von eroj » 15.09.2010 09:17:15
Okay. Fehler gefunden und behoben!
Ich habe an den wichtigen Stellen mit 2>&1 alles in eine LOG-Datei geschrieben, wobei herauskam das er das Skript, welches er generiert nicht im Zugriff hat. Habe dann mit exakten Pfaden gearbeitet. Danach ging es. Danke an alle Beteiligten.