2016-07-29 3 views

Antwort

2

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 
+0

Funktioniert immer noch nicht –

+0

@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

+0

Ich erhalte keine solche Prozessbenachrichtigung. –

2

vielleicht eine Lösung so etwas wie dieses könnte

STATUS=0 
while [ $STATUS -eq 0 ]; do 
    echo $STATUS 
    sleep 1 
    STATUS=$(/usr/bin/pgrep mysql | wc -l) 
done 

man die STATUS Variable innerhalb der Schleife aktualisieren muss, um den aktuellen Status widerspiegeln .

+0

verdammt! Ich muss mehr über bash recherchieren, ich dachte, ich würde einen Alias ​​für den Befehl erstellen. Eine weitere Frage, wo lese ich über -eq -ne usw.? –

+1

eine Übersicht kann z.B. unter http://tldp.org/LDP/abs/html/comparison-ops.html – ewcz