Dies läuft mysqld_safe
:
/usr/bin/mysqld_safe
Dies läuft pgrep
und speichert das Ergebnis in STATUS:
STATUS=$(/usr/bin/pgrep mysql | wc -l)
STATUS wird nie wieder aktualisiert. Diese Schleife wird unter Verwendung eines konstanten festen Werts von STATUS:
while $STATUS -eq 0; do
echo "$STATUS"
sleep 1
done
Beachten Sie, dass der Test in der While-Schleife fehlerhaft ist. Es sollte lesen:
while [ "$STATUS" -eq 0 ]; do
Live-Updates zu erhalten, pgrep
sollte innerhalb der Schleife ausgeführt werden. Da ferner pgrep
einen Exit-Code setzt, den Testbefehl, [...]
, ist überflüssig:
die Schleife am Laufen zu halten, während es keine Instanzen von MySQL sind:
while ! /usr/bin/pgrep mysql >/dev/null; do
pgrep
liefert Erfolg (Exit-Code = 0) wenn es einen passenden Prozess findet. Da Sie scheinen, dass die Schleife wiederholt werden soll, wenn es keinen passenden Prozess gibt, invertieren wir den Exit-Code mit !
.
Oder sie alle wieder zusammen:
/usr/bin/mysqld_safe
while ! /usr/bin/pgrep mysql >/dev/null; do
echo "No such process"
sleep 1
done
Unter der Annahme, dass mysqld_safe
erfolgreich gestartet wird, die while
Schleife wird nie ausgeführt. Sie sollten nur sehen, Ausgabe von der While-Schleife ist mysqld_safe
startet nicht.
Wenn Sie stattdessen eine kontinuierliche Status-Update wollen:
/usr/bin/mysqld_safe
while true; do
/usr/bin/pgrep mysql >/dev/null
echo "Current status: $?"
sleep 1
done
Funktioniert immer noch nicht –
@salivan Bitte klären Sie: Welchen Teil des Codes haben Sie versucht? Was wolltest du es tun? Und was ist eigentlich passiert, als du es versucht hast? – John1024
Ich erhalte keine solche Prozessbenachrichtigung. –