Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben (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 von bigvic
Geschrieben

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.

Geschrieben

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.

Geschrieben

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

Geschrieben

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?

Geschrieben
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.

Geschrieben
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...

Geschrieben
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... :)

Geschrieben

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

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...