FFFF schrieb:
> Scriptauszug:
> LogDate=$(date "+%A %d.%m.%Y %H:%M:%S")
> FileDate=$(date "+%Y_%m_%d_%H_%M")
> echo "$LogDate : Create MySQL dump under: $Folder$Filename$FileDate.gz"
> echo "$LogDate : Create MySQL dump under: $Folder$Filename$FileDate.gz"
>>>$Folder$LogFileName
> sudo /usr/local/mysql4/bin/mysqldump -u$User -p$Password --all-databases
> | pigz --best > $Folder$Filename$FileDate'.gz'
> LogDate=$(date "+%A %d.%m.%Y %H:%M:%S")
> if [ $? -ne 0 ]; then
> echo "$LogDate : Error creating SQL Stream" >>$Folder$LogFileName
> echo "$LogDate : Error creating SQL Stream"
> else
> echo "$LogDate : SQL Dump OK" >>$Folder$LogFileName
> echo "$LogDate : SQL Dump OK"
> fi
"sudo mysqldump" ergibt keinen Sinn -- schon gar nicht, wenn mysqldump
sich ohnehin mit Username und Passwort am MySQL-Server anmeldet.
Vermutlich ist das sudo hier auch das Problem, das erwartet nämlich
normalerweise eine interaktive Paßworteingabe, wenn Du es nicht explizit
mit der "NOPASSWD"-Option eingerichtet hast. Durch die Verwendung der
Shell Redirection wird dann zwar eine leere Datei angelegt, aber sudo
wartet dann ewig auf die Eingabe eines Paßwortes, ruft daher mysqldump
gar nicht auf und dieses liefert dann keine Daten an pigz...
Außerdem würde ich das wiederholte "$Folder$Filename$FileDate" sowie
"$Folder$LogFileName" einfach eigenen Variablen zuweisen und dann diese
benutzen. Es mehrmals zu konstruieren ist unelegant und fehleranfällig.
Schon die zweimalige Zuweisung an "LogDate" ist unschön und obendrein
fehlerhaft: dadurch kommen Leerzeichen in Deine Dateinamen, die darum
gequotet ("") werden müßten. (Wobei ich grundsätzlich von der Nutzung
von Leerzeichen in Dateinamen abrate, weil diese bei Shelltools immer
wieder zu fehleranfälligen Verrenkungen führen.) Expandier das einfach
mal: aus1 | LogDate=$(date "+%A %d.%m.%Y %H:%M:%S")
|
2 | echo "a" > ${LogDate}
|
führt zu:
1 | echo "a" > Mittwoch 10.08.2016 09:57:40
|
Das ist vermutlich nicht das, was Du willst. (Ansonsten rate ich eher
dazu, Sekunden seit Epoch zu benutzen (date +"%s") oder wenigsten ein
ISO-Datum (date -Iseconds).)
Weiterhin würde ich die Logmeldungen nicht in separate Dateien, sondern
über logger(1) ins Syslog schreiben. Da gehören solche Logdaten nämlich
hin (nicht umsonst haben UNIX-Systeme ein sehr umfangreiches, zentrales
Logging), schon alleine damit klassische Logmonitore wie logcheck oder
"richtige" Monitoringlösungen wie Icinga oder Zabbix das sehen können.
Im Übrigen ist der Rückgabewert eines erfolgreichen Shellkommandos in
der Regel NICHT 0, sondern 1 -- das dürfte auch für mysqldump gelten.
Zudem bist Du Dir hoffentlich darüber im Klaren, daß Du nicht den
Rückgabewert von mysqldump, sondern den von pigz überprüfst.