1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

'ps -ef | grep tomcat' in einer Schleife

Dieses Thema im Forum "Linux & Unix" wurde erstellt von Commu, 7. April 2017.

  1. Commu

    Commu Grünschnabel

    Hallo Zusammen,

    ich wollte ein überwachungssript bauen.

    Code (PHP):
    1. #!/bin/bash
    2. kommand='ps -ef | grep tomcat'
    3. i=0
    4. while [ $kommand ]
    5. do
    6.     $i=$i+1
    7. done
    8. echo Ergebnis = $i
    ich scheitere schon im Anfang
    das Ergebnis = 0
    Kann mir jemand helfen?

    Danke und Gruß Jörg
     
  2. melmager

    melmager Erfahrenes Mitglied

    mir ist noch nicht ganz klar was das ergebnis sein soll

    kommand='ps -ef | grep tomcat | wc -l'

    ergebnis ist anzahl der gefundenen zeilen mit "tomcat" plus eins da auch der grep mitzählt
     
  3. Commu

    Commu Grünschnabel

    genau, ich wollte die Anzahl der Prozesse = 2 haben, ist aber nicht.
    Statt dessen habe ich die Meldung zuviele Parameter in der WHILE-Schleife.

    wie bekomme ich die 2 in eine Variable?

    Gruß Jörg
     
    Zuletzt bearbeitet: 10. April 2017
  4. melmager

    melmager Erfahrenes Mitglied

    mit dem wc -l im Befehl wird die While Schleife nicht gebraucht.
    wc -l zählt einfach die zeilen von der grep ausgabe :)
    sprich in kommand ist deine 2 ....
     
  5. Commu

    Commu Grünschnabel

    wenn ich 'echo $kommand' ins Script schreibe bekomme ich immer den Befehl angezeigt
    stellt sich die Frage wie das mit den '' ist?
    kann man die auch weg lassen?
    oki werde testen.

    Danke für die Hilfe
    Gruß Jörg
     
  6. Commu

    Commu Grünschnabel

    Da bich noch mal,

    ich habe das Script umgestellt.

    Code (PHP):
    1. #!/bin/bash
    2.  
    3. tom=ps -ef | grep tomcat | wc -l
    4.  
    5. echo Ergebnis = $tom
    6.  
    7. if [ $tom < 2 ]
    8.     then echo 'PROZ ERROR: 0 Tomcat ist nicht gestartet'
    9.   elif [ $tom = 2 ]
    10.     then echo 'PROZ OK: Tomcat läuft'
    11.   else echo 'PROCS CRITICAL: mehr als 1 Prozess gestartet'
    12. fi
    als Rückgabe habe ich:

    ./check_tomcat: line 5: tom: command not found
    0
    Ergebnis =
    ./check_tomcat: line 10: 2: Datei oder Verzeichnis nicht gefunden
    ./check_tomcat: line 12: [: =: unary operator expected
    PROCS CRITICAL: < 1 Prozess gestartet

    wenn ich den PS-Befehl in '' schreibe bekomme ich in $tom nur die Befehlszeile ausgegeben.
    Ergebnis = ps -ef | grep tomcat | wc -l
     
  7. melmager

    melmager Erfahrenes Mitglied

    also
    doppelte hochkomma " sind bei ausgaben zu nutzen
    echo "das ist ne ausgabe"
    also wenn man mit zeichen arbeiten will "
    wenn etwas ausgeführt werden muss dann sind
    die hochkomma in der Ebene der Zahlen (mit shift) ` zu nutzen
    also muss deine Zeile so aussehen:
    tom=`ps -ef | grep tomcat | wc -l`
    echo "ausgabe anzahl $tom"

    statt hochkomma kann auch
    tom=$(ps -ef | grep tomcat | wc -l)
    benutzt werden , also eine klammer die am anfang ein $ hat
     
    Zuletzt bearbeitet: 12. April 2017
  8. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

  9. Commu

    Commu Grünschnabel

    nach langer Pause bin ich wieder da.

    @Bratkartoffel : weil der NAGIOS-Server, egal mit welchem check_???, immer 0 liefert möchte ich das mit einem Script selber umgehen.
    Führe ich die die Command in der Eingabe manuel durch, habe ich ein Ergebnis.

    @melmager
    tom=$(ps -ef | grep tomcat | wc -l) hat den erfolg gebracht, aber warum werden mir 4 prozesse angezeigt?
    Wenn ps -ef | grep tomcat | wc -l ausführe habe ich nur 2.

    Vielen Dank und Gruß Jörg
     
  10. melmager

    melmager Erfahrenes Mitglied

    daran habe ich nicht gedacht :(
    alles in der klammer $( ) steht wird in einer extra shell ausgeführt und da ja in der suchabfrage auch
    der string tomcat steht werden die "such" prozesse mit gefunden.
    mit den ` Hochkomma sollte es 2 werden weil dann die gleiche shell ausführt
    tom='ps -ef | grep -c firefox'
    sollte auch zählen
     
  11. Commu

    Commu Grünschnabel

    super das funktioniert
    Danke
     
Die Seite wird geladen...
Ähnliche Themen - grep tomcat' einer
  1. oraclin25
    Antworten:
    12
    Aufrufe:
    2.072
  2. schlawiner
    Antworten:
    1
    Aufrufe:
    1.401
  3. Fuchsei
    Antworten:
    7
    Aufrufe:
    3.069
  4. Erks
    Antworten:
    3
    Aufrufe:
    2.035
  5. Maik639
    Antworten:
    2
    Aufrufe:
    1.088