fachinfo007 Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Hi, habe folgendes bash-script, das alle 15 Minuten läuft (also 00,15,30,45): #!/bin/bash ## Define your websites in an array sites=(site1.de site2.de) len=${#sites[*]} for((i=0; i<$len; i++)); do wget -O - -q -t 1 http://${sites[${i}]}/cron.php done ## Nur 1x im Monat, jeden 7. um 3:00 Uhr nachts tag_time=$(date +"%d-%H-%M") datum=$(date +"%Y-%m-%d") if ([ $tag_time = "07-03-00" ]) then tar cfvj ~/scripts/backup/$datum.tar.bz ~/public_html/drupal &> /dev/null fi Der erste Teil tut, aber das backup wird einfach nicht erstellt, obwohl der cronjob zur richtigen Zeit startet. Wenn ich die uhrzeit ändere und das Script von Hand starte funktioniert es allerdings - nur über cron gehts nicht. Habt Ihr Ideen, was das sein könnte? Danke schonmal! Gruß Markus Zitieren
bigvic Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 (bearbeitet) Genaue Fehlermeldung? Als welcher User wird es beim cron ausgeführt? Z. B. sind relative Pfadangaben ~/scripts/backup/$datum.tar.bz ~/public_html/drupal meist eine Fehlerquelle ... Bearbeitet 7. Mai 2009 von bigvic Zitieren
DevilDawn Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Der erste Teil tut, aber das backup wird einfach nicht erstellt, obwohl der cronjob zur richtigen Zeit startet. Wenn ich die uhrzeit ändere und das Script von Hand starte funktioniert es allerdings - nur über cron gehts nicht. Vermutlich dauert das wget der 2 Sites länger als eine Minute...? Du solltest das Datum beim start des scripts ermitteln und festhalten. Sonst bist du immer davon abhängig wie lange Befehle brauchen bis du beim finalen if...then bist. Zitieren
truebsalgeblaese Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Hallo, wie genau ist Dein Eintrag in der crontab (bzw. in welcher....) tsg Zitieren
fachinfo007 Geschrieben 7. Mai 2009 Autor Geschrieben 7. Mai 2009 Danke schonmal allen! @victorinox: Exit status 0, eine Fehlermeldung kommt nicht. @DevilDawn: Teste ich gleich mal @truebsalgeblaese: */15 * * * * /home/username/scripts/cron.bash Der cron um den es geht läuft bei einem Web-Hoster, wo ich ssh-Zugriff drauf habe. Zitieren
truebsalgeblaese Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Ich habs mal nachgestellt, dabei sind mir 2 Dinge aufgefallen 1) Die Laufzeit des wget kann Probleme bereiten, wenns länger als 59 sek dauert :-) 2) Als was für ein User läuft die crontab? Weil mit falschem Benutzer bzw. fehlendem Recht kann der tar auch auf die Schnauze fallen... tsg Zitieren
fachinfo007 Geschrieben 7. Mai 2009 Autor Geschrieben 7. Mai 2009 Umgestellt (wget als zweites) und mit absoluten Pfadangaben ist es jetzt erfolgreich durchgelaufen, Danke! Allerdings steht in der eMail, die ich zu jeder Ausführung des cronjob bekomme, er sei "wegen Zeitüberschreitung abgebrochen" worden. Gab's da nicht auch mal einen Trick, das sich scripte selbst recursiv aufrufen bzw. sich selbst sourcen, damit keine Zeitüberschreitung kommt? Zitieren
DevilDawn Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Allerdings steht in der eMail, die ich zu jeder Ausführung des cronjob bekomme, er sei "wegen Zeitüberschreitung abgebrochen" worden. Eher rausfinden was genau da in einen Timeout rennt und das Problem beheben. Es wird ja nicht besser wenn man es neu ausführt. Zitieren
fachinfo007 Geschrieben 7. Mai 2009 Autor Geschrieben 7. Mai 2009 Eher rausfinden was genau da in einen Timeout rennt und das Problem beheben. Wie finde ich das denn raus? Wenn ich das gesamte script von Hand starte, dann läuft es in 18 Sekunden ab (time ./cronscript.bash). Gibt es ein Zeitlimit für cronjobs oder bash-scripte? ulimit -t ist unlimited... Zitieren
DevilDawn Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Wie finde ich das denn raus? Wenn ich das gesamte script von Hand starte, dann läuft es in 18 Sekunden ab (time ./cronscript.bash). Gibt es ein Zeitlimit für cronjobs oder bash-scripte? ulimit -t ist unlimited... Eventuell in die crontab statt /pfad/zum/cronscript.bash ein /bin/sh -x /pfad/zum/cronscript.bash 2> /var/tmp/cronscript.debug werfen, das nutzt den debugmodus und STDERR wird in die debugdatei umgeleitet. Die kann man sich dann ja mal anschauen Außerdem sollte man bei externen Aufrufen wie wget, tar etc. gerne mal den exitcode testen. Man darf sich nie drauf verlassen das alles Funktioniert hat, gerade bei Scripts die unbeaufsichtigt laufen. Das es spezielle Zeitlimits für cronjobs gibt wäre mir nicht bekannt - was nicht heißt das es sie nicht gibt... Zitieren
fachinfo007 Geschrieben 8. Mai 2009 Autor Geschrieben 8. Mai 2009 Danke Dir, DevilDawn. Ich habe mal den Debug-output mitgelesen, alles funzt wie's soll, die exit-codes sind bei allen 0, trotz das ein Abbruch gemeldet wird. Scheinbar kommt immer nach 20 Sekunden die Meldung, der Cronjob sei abgebrochen worden, auch wenn er durchgelaufen ist. Wenn es ein Limit gibt wurmt es mich, das ich nichts darüber weiß :-) Hier hat jemand das gleiche Problem (auf einem anderen hoster): Link Zitieren
DevilDawn Geschrieben 8. Mai 2009 Geschrieben 8. Mai 2009 Ich hab irgendwie wohl überlesen dass das ganze auf einem Fremdhost stattfindet. Nun ja, dann wirst du da wohl deinen Hoster zu befragen müssen und ggf. Updaten, oder die Aufgabe in mehrere Scripts aufteilen müssen um das CPU Limit zu umgehen. Zitieren
fachinfo007 Geschrieben 8. Mai 2009 Autor Geschrieben 8. Mai 2009 um das CPU Limit zu umgehen. Wie wird das Limit denn gesetzt? ulimit zeigt mit unlimited cpu time an, das kanns nicht sein... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.