qnorx 10 Geschrieben 15. Januar 2007 Melden Teilen Geschrieben 15. Januar 2007 Hallo zusammen ich habe ein "master" batch, das vier weitere batch Dateien startet: start /wait /low /B backup_mysql_master.bat start /wait /low /B backup_mysql_slave_3307.bat start /wait /low /B backup_mysql_slave_3308.bat start /wait /low /B backup_mysql_slave_3309.bat Die "sub" batches tun in der essenz eigentlich nur folgendes: start /wait /low d:\mysql-master\bin\mysqldump --host=127.0.0.1 --port=3306 --user=user --password=password --all-databases --verbose --compress > %BackupFile% Die batches laufen fehlerfrei durch - soweit so gut. Nur - das master batch wartet nach dem Aufruf des ersten sub batches nicht auf dessen beendigung, sondern ruft umgehend die restlichen sub batches auf, so dass alle nebeneinander laufen. Was mache ich falsch? Vielen Dank für Eure Hilfe Frank Zitieren Link zu diesem Kommentar
qnorx 10 Geschrieben 15. Januar 2007 Autor Melden Teilen Geschrieben 15. Januar 2007 Wenn ich alles in ein batch file nehme... start /wait /low d:\mysql-master\bin\mysqldump --host=127.0.0.1 --port=3306 --user=user --password=password --all-databases --verbose --compress > %BackupFileMaster% start /wait /low d:\mysql-slave-3307\bin\mysqldump --host=127.0.0.1 --port=3307 --user=user --password=password --all-databases --verbose --compress > %BackupFileSlave3307% start /wait /low d:\mysql-slave-3308\bin\mysqldump --host=127.0.0.1 --port=3308 --user=user --password=password --all-databases --verbose --compress > %BackupFileSlave3308% start /wait /low d:\mysql-slave-3309\bin\mysqldump --host=127.0.0.1 --port=3309 --user=user --password=password --all-databases --verbose --compress > %BackupFileSlave3309% ... dann läuft die Applikation jeweils durch und erst dann wir der nächste start Befehl ausgeführt. Nur: mit dieser Syntax steht in meinen Ausgabe Files %BackupFileXXXX% nichts - ich sehe aber, dass das Backup selbst durchläuft, die Daten wären also da. Füge ich jeweils den Parameter /b ein.... start /wait /low /b d:\mysql-master\bin\mysqldump --host=127.0.0.1 --port=3306 --user=user --password=password --all-databases --verbose --compress >> %BackupFileMaster% start /wait /low /b d:\mysql-slave-3307\bin\mysqldump --host=127.0.0.1 --port=3307 --user=user --password=password --all-databases --verbose --compress >> %BackupFileSlave3307% start /wait /low /b d:\mysql-slave-3308\bin\mysqldump --host=127.0.0.1 --port=3308 --user=user --password=password --all-databases --verbose --compress >> %BackupFileSlave3308% start /wait /low /b d:\mysql-slave-3309\bin\mysqldump --host=127.0.0.1 --port=3309 --user=user --password=password --all-databases --verbose --compress >> %BackupFileSlave3309% dann habe ich zwar die Daten wie gewünscht in den Ausgabe Files, aber wartet das batch file wieder nicht mehr auf dei Beendigung des vorgängigen Tasks und startet alles sofort hintereinander, so dass die Prozesse parallel laufen. Irgendwie dreh' ich mich hier im Kreis.... Zitieren Link zu diesem Kommentar
Squire 273 Geschrieben 15. Januar 2007 Melden Teilen Geschrieben 15. Januar 2007 hi, ruf halt die Programme mit CALL statt START auf, dann wird die Batch erst dann weiterausgeführt wenn das externe Programm durchgelaufen ist Zitieren Link zu diesem Kommentar
Biber 10 Geschrieben 15. Januar 2007 Melden Teilen Geschrieben 15. Januar 2007 Moin qnorx, nun muss ich aber mal zurückfragen... In der Hilfe "Start /?" steht: Wird eine grafische 32-Bit-Anwendung aufgerufen, wartet CMD.EXE nicht auf das Beenden dieser Anwendung, sondern kehrt sofort zur Eingabeauforderung zurück. Das gilt NICHT, wenn diese Anwendung aus einem Befehlsskript heraus aufgerufen wird. Also: ist mysqldump eine graphische W32-Bit-Anwendung? If so, dann kannst Du soviele /Waits eingeben, wie Du möchtest - ohne Effekt. If not: Dann kannst Du doch statt diesem Start /b /low /whatever einfach direkt eingeben: d:\mysql-slave-3307\bin\mysqldump ...... ... oder hab ich jetzt etwas übersehen? Gruß Biber Zitieren Link zu diesem Kommentar
qnorx 10 Geschrieben 15. Januar 2007 Autor Melden Teilen Geschrieben 15. Januar 2007 Moin qnorx, nun muss ich aber mal zurückfragen... In der Hilfe "Start /?" steht: Wird eine grafische 32-Bit-Anwendung aufgerufen, wartet CMD.EXE nicht auf das Beenden dieser Anwendung, sondern kehrt sofort zur Eingabeauforderung zurück. Das gilt NICHT, wenn diese Anwendung aus einem Befehlsskript heraus aufgerufen wird. Also: ist mysqldump eine graphische W32-Bit-Anwendung? If so, dann kannst Du soviele /Waits eingeben, wie Du möchtest - ohne Effekt. If not: Dann kannst Du doch statt diesem Start /b /low /whatever einfach direkt eingeben: d:\mysql-slave-3307\bin\mysqldump ...... ... oder hab ich jetzt etwas übersehen? Gruß Biber Halllo Biber nein, es ist keine graphische Applikation. Es ist ein Konsolen-Utility um MySQL Datenbanken zu dumpen. Zitieren Link zu diesem Kommentar
qnorx 10 Geschrieben 15. Januar 2007 Autor Melden Teilen Geschrieben 15. Januar 2007 hi, ruf halt die Programme mit CALL statt START auf, dann wird die Batch erst dann weiterausgeführt wenn das externe Programm durchgelaufen ist Hallo Squire dann bekomme ich aber ein anderes Problem - ich möchte nämlich die Prozesspriorität setzten können. Mit CALL habe ich da keine Priorität setzen. Und CALL mit START kombiniert ändert am Verhalten leider nichts. Zitieren Link zu diesem Kommentar
qnorx 10 Geschrieben 18. Januar 2007 Autor Melden Teilen Geschrieben 18. Januar 2007 Konnte das Problem inzwischen lösen. Lösung: Offenbar wird die Option /b überschrieben, wenn man die Ausgabe einer Konsolenanwendung via > in ein File umlenkt. Vielen Dank für Eure Hilfe. Gruss, Frank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.