PsAwk

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Wie oft hat man es, dass man in der Prozessliste nach einem bestimmten Programm suchen will, um beispielsweise den PID rauszubekommen. Aber wenn man danach greped hat man in der Ergebnisliste auch den grep befehlt, was man ja nicht unbedingt haben möchte.

Dies kann man sehr einfach mit awk lösen. Ein Beispiel:

ps ax  | awk '/vim/&&!/awk/{print \\$1}'

Dieser Ausdruck gibt die Pids von allen vim Programmen aus, die auf dem System laufen.

Eine andere aufgabenstellung ist es zu schauen, ob ein bestimmter Prozess läuft, oder nicht, die kann mit einer ähnlichen Konstruktion gelößt werden:

ps ax  | awk '/vim/&&!/awk/{exit 1}'

oder als Umkehrung, also dass er 0 ( = EXIT_SUCCESS ) anzeigt, wenn es gefunden wurde:

ps ax  | awk 'BEGIN { ret = 1 } ;/vim/&&!/awk/{ret = 0}; END{exit ret}' 

Die Grundlage zu beiden befehlen ist, dass die Anweisungen in den geschweiften Klammern nur dann ausgeführt werden, wenn der regex vorher auf die akutelle Zeile passt. Der Regex schaut, ob "vim" in der Zeile vorkommt, aber stellt auch die Bedinung, dass der Ausdruck "awk" nicht passen darf.