Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Servus,

ich hab jetzt grad schon das ganze Forum durchgeforstet und bin noch zu keinem Ergebnis gekommen.

Weiß jemand wie man unter DOS eine Abfrage schreibt die z.B. in einer IF-Abfrage

herausfindet ob der Befehl "mysqladmin status" einen bestimmten Wert

zurückgibt, bzw. ob der mysqld läuft oder nicht?

Wenn ja, soll der Befehl "mysqladmin shutdown" ausgeführt werden und

anschließend immer die "start.exe" aufrufen.

Das Ganze natürlich in ne Batch-Datei oder EXE packen.

Bin grad dabei einen CD-ROM-Webserver lauffähig zu machen,

allerdings beendet sich dieser MySQL-Prozess oft nicht von alleine und das

hat unter Win98 die übelsten Folgen wenn ich dann den Prozess nochmal

starte indem ich die start.exe nochmal aufrufe.

Danke schon mal für eure Hilfe.

Viele Grüße...

SirBarry :marine

Also mir fallen da spontan zwei Möglichkeiten ein:

1. Wenn du es aus einem C-Programm mit der System() Funktion aufrufst, kriegst du als Returnwert den DOS-ErrorLevel zurück. Wäre dann nur noch rauszufinden, was für welche, bzw ob dein Befehl die DOS-ErrorLevel überhaupt setzt.

2. Du könntest den Befehl mit dem Output Operator (>) aufrufen, so dass die Ausgaben des Programms in eine Datei geschrieben werden, und diese dann mit einem C-Programm parsen.

Man kann den Returnwert auch sicher irgendwie in der Shell abfragen, aber da ist mir leider nichts bekannt.

Es sollte mittels find auch einfacher gehen:

mysqladmin status > %temp%\status.txt

find "Suchstring" < %temp%\status.txt

if errorlevel 1 goto ende

rem wenn der Suchstring nicht gefunden wurde, gibt find einen Fehlercode >=1 zurück; dann zum Ende springen


rem Jetzt die Aktionen, wenn der Suchstring gefunden wurde:

mysqladmin shutdown

start.exe


:ende

Hmm, hab jetzt mal die DOS-Variante getestet. Scheint auf den ersten Blick zu funktionieren. Aber die Datei status.txt wird ja IMMER erstellt und verfehlt dann doch ihren Zweck, richtig?

Das sollte doch auch gehen wenn ich einfach mysqladmin status schreibe und dann die IF-Abfrage mache. Da sollte ja auch so einen Errorlevel geschrieben werden, oder?

Beim ersten Mal bekomme ich übrigens immer ne Fehlermeldung. Can't connect usw...

Hab schon versucht mit @echo off Fehlermeldungen zu unterdrücken, aber das geht scheinbar nicht, oder doch?

Danke schon mal für eure ersten Hilfen.

SirBarry :confused:

Noch was:

dieser mysqladmin Befehl lässt sich nur ausführen wenn der Webserver an sich läuft, sprich die start.exe ausgeführt wurde. Ansonsten gibts ne Fehlermeldung,

Die soll übrigens am Schluss immer in jedemfall gestartet werden, lediglich der mysqld muss irgendwie beendet werden, falls er läuft, bevor man die start.exe startet.

So isses vielleicht ein bisschen klarer!?

SirBarry   () :marine ()

            -----------

Hallo,

Die Fehlermeldung wird wahrscheinlich auf stderror ausgebene, echo off bezieht sich aber nur auf stdout. Der ERRORLEVEL wird mit dem return-Wert von externen Programmen gesetzt, welcher Wert das konkret ist, hängt von dem aufgerufenen Programm ab und sollte dementsprechend dort in der Manual-Page oder Beschreibung stehen (alternativ kannst Du ihn Dir auch testweise durch deine Batch-Datei ausgeben lassen).

Nic

also ich weiss nicht ob dir das wirklich hilft, aber wenn du in der Shell einen Dateinamen eingibst, z.B. c:\test.txt, aber die Datei nicht existiert, dann wird der errorlevel auf 9009 gesetzt.

Aber wenn die Datei immer erzeugt wird, bringt dir das ja auch nichts.

Aber mit find suchst du ja einen String in einem File. Du kannst also mit find überprüfen, ob in der Datei auch drinsteht, dass er heruntergefahren ist.

Insofern sollte das dann (theoretisch) schon funktionieren.

stimmt, du könntest die Erstellung der Datei umgehen, indem du direkt

find "xyz" < mysqladmin status

if errorlevel....

machst.

Der "Umweg" über die Datei wird erst nötig, wenn du die Ausgabe nacheinender auf mehrere Suchstrings überprüfen willst. So könntest du aber anhand der Ausgabe (bzw. der Fehlermeldung) unterscheiden, ob der Webserver läuft:


mysqladmin status > %temp%\status.txt


find "Alles-OK-Meldung" < %temp%\status.txt

if errorlevel 1 goto ende

rem alles ok


find "Fehlermeldung" < %temp%\status.txt

if errorlevel 1 goto webstart

rem wenn der Fehlermeldung nicht erkannt wurde, läuft der mysqld und muss beendet werden

rem ansonsten wird der Befehl zum Beenden übersprungen


mysqladmin shutdown


:webstart

start.exe


:ende

echo off schaltet übrigens nicht die Fehlermeldungen ab, sondern bewirkt, dass die Zeilen deiner Batchdatei beim Abarbeiten nicht (zusätzlich zu den normalen Programmausgaben) angezeigt werden.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.