Gast014 10 Geschrieben 15. Januar 2007 Melden 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
Gast014 10 Geschrieben 15. Januar 2007 Autor Melden 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....
Squire 290 Geschrieben 15. Januar 2007 Melden 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
Biber 10 Geschrieben 15. Januar 2007 Melden 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
Gast014 10 Geschrieben 15. Januar 2007 Autor Melden 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.
Gast014 10 Geschrieben 15. Januar 2007 Autor Melden 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.
Gast014 10 Geschrieben 18. Januar 2007 Autor Melden 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden