ich bin neu im Bash-Scripting und ich muss feststellen, ob ein Prozess in einer Linux-Umgebung läuft. Eigentlich benutze ich die Folge Befehl, um die Arbeit zu erledigen:grep eine Variable, die Sonderzeichen enthält
#ps -ef | awk '{print substr($0, index($0,$8))}' | grep -v grep | grep -w -F $PROCESSNAME
wo
awk '{print substr($0, index($0,$8))}'
mir erlauben Felder UID PID PPID C STIME TTY TIME und mir
grep -v grep
erlauben zu ignorieren Ignoriere die Zeile, die den Befehl selbst enthält. An dieser Stelle habe ich eine Liste aller Prozesse, die auf dem System laufen.
Endlich:
grep -w -F $PROCESSNAME
lesen eine Variable, die den Namen des Prozesses enthält, die ich überprüfen möchten. Für das, was ich verstehe, sollte der vollständige Befehl nur die Zeile zurück, die den genauen Wert von $ PROCESS
Eigentlich nicht, die dem Muster „[Prozessnamen]“, und wahrscheinlich auch für andere Muster folgen arbeitet für Prozesse richtig dies nicht hat .
Zum Beispiel zu vereinfachen, wenn ich einen laufenden Prozess namens habe „[vmmemctl]“ und ich laufe:
#ps -ef | grep -v grep | grep -w -F "vmmemctl]"
es gibt tatsächlich ein Ergebnis:
#root 615 2 0 Feb26 ? 00:01:00 [vmmemctl]
aber die eigentlichen Prozessnamen Der Befehl unterscheidet sich vom Prozessnamen im Ergebnis. Was ist der richtige Befehl, der dieses Verhalten nicht hat?
Danke
Verwenden Sie einfach 'pgrep' und nennen .. – heemayl
oder' pidof' oder ... – twalberg