Probleme mit meinem Crontab

Kohli

New Member
Hallo!

Ich habe mir folgendes Script in der Datei back.sh geschrieben:

#Grundeinstellungen
Datum=`date +%Y%m%d`

# Tabletop24
cd htdocs/backups/
mysqldump -u USER -h localhost -pPW DATENBANK > tabletop_$Datum.sql


Wenn ich den Code in Putty ausführe, funktioniert es. Nun aber habe ich es im crontab wie folgt eingegeben:

20 16 * * * /home/htdocs/backups/backup.sh


Leider wird meine Datei nicht ausgeführt. Was habe ich falsch gemacht?


Gruß Rene
 
Last edited by a moderator:
Shebang-Zeile fehlt - Alternativ im Crontab der Interpreteraufruf.

Füge an erster Stelle im Script die Zeile
Code:
#!/bin/bash
ein.
 
Rechte geklärt?

Steht das im root crontab oder im systemweiten /etc/crontab (dort muss ein Benutzer mit angegeben werden)?

Falls ein Benutzer verwendet wird, steht dieser im /etc/cron.allow?
 
@Thorsten
Das habe ich nicht verstanden?

@wstuermer
Erledigt. Hatte aber nichts gebracht.

@Thunderbyte
Ich habe einen Managed Server von Strato. Mir wurde ein User zugewiesen. Habe ihn im crontab eingetragen. Aber es passierte auch nichts.

Hier nochmal meine Aktualisierung:

#!/bin/bash

#Grundeinstellungen
Datum=`date +%Y%m%d`

# Tabletop24
mysqldump -u DBUser4 -h localhost -pPW DATENBANK > tabletop_$Datum.sql

54 19 * * * USER /home/htdocs/backups/tabletop24/db/backup.sh

Sind die Änderungen korrekt?
 
54 19 * * * USER /home/htdocs/backups/tabletop24/db/backup.sh

Dieser Benutzer ist nicht gleich dem MySQL Benutzer, der in der mysqldump Zeile angegeben ist. Ich vermute, dass der Systembenutzer, der den Befehl auf der Konsole ausführt und der Systembenutzer der das Skript ausführt nicht identisch sind?

Nebenbei: Hier ist die korrekte Syntax für die mysqldump Befehle, es ist deutlich weniger riskant, die Langformen wie --user=parameter zu nehmen. Beim Passwort darf man kein Leerzeichen setzen, beim User schon.
 
Auf einem Managed-Server wird er wohl kaum die System-Crontab bearbeiten dürfen, daher hat der User im Crontab nichts zu suchen. Dann fehlen absolute Pfade und -h ist bei lokaler Nutzung vollkommen überflüssig. Desweiteren ist der Chmod des Scripts ebenso ungeklärt, wie das Format der Zeilenenden...
 
Vielen Dank für Eure Hilfen.

Was mir aber fehlte, war ein sh im crontab Editor vor meiner Sriptdatei.

Also
20 16 * * * sh backup.sh


Meine nächste Frage :-)
Kann ich mir per Mail mitteilen, dass die Sicherung erfolgreich war bzw. durchgeführt wurde?
 
Die Zeile
MAILTO="foo@bar"
in die Crontab an den Anfang schreiben, davon ausgehen dass dein Backup-Skript Fehlermeldungen an stdout oder stderr schreibt.

schöne Grüße,
Nils
 
Hallo!

Schon mal vielen Dank.

Wenn ich im Script den mysqldump Befehl ausführe, kann ich mir ausgeben, wenn dieser positiv war? Im normalfall erscheint keine Meldung.
 
Last edited by a moderator:
Ich denke ich komme der Sache näher, so wie ich es mir wünsche. Möchte aber Eure Meinung zu folgenden Code wissen:

#Beginn Kohli.de Portalseite
echo " " >> $NACHRICHT
ZEIT=`date +%k:%M`
echo $DATUM" "$ZEIT >> $NACHRICHT

echo "Erstelle Datenbank Dump von Kohli.de Portalseite" >> $NACHRICHT
/usr/bin/mysqldump -uUSER -pPASS DATENBANK > kohli-portalseite/db/kohli-portalseite_`date +%m_%d`.sql
if [ $? -ne 0 ]
then
echo "Sicherung abgebrochen" >> $NACHRICHT
else
echo "Datenbanksicherung war erfolgreich!" >> $NACHRICHT
fi

Wäre das so OK oder würdet Ihr was anderes machen?
 
Dann fehlen absolute Pfade

Stimmt. Und chmod Rechte fehlten. Jetzt wird das Script ausgeführt, aber die Befehle nicht.

z.B. werden die Datenbanken nicht gesichert. Manuell ausgeführt schon.


Muss ich noch einen Benutzer im crontab eintragen?
 
Back
Top