PID bei einem Prozess abfragen
Hi,
Wenn ich in einem Shell-Script einen neuen Prozess auslöse (zB firefox), wie kann ich die Prozessnummer direkt in einer Variablen speichern?
Gruss
Wenn ich in einem Shell-Script einen neuen Prozess auslöse (zB firefox), wie kann ich die Prozessnummer direkt in einer Variablen speichern?
Gruss
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86042
Url: https://administrator.de/contentid/86042
Ausgedruckt am: 20.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Normalerweise gibt das Tool "pidof" alle PID's einer Binary zurück, wenn sie gestartet ist. Du kannst das auch mit
Naja, ansonsten kannst du das noch mit der folgenden leichtzumerkenden Befehlskette nach dem Prozessnamen filtern. Das brauchst du wenn du nur eine ganz bestimmte instanz einer binary zb.
Wobei /bin/bash der pfad des Programmes das du suchst ist. ps -Ao pid,command listet ALLE prozesse, aber nur die PID und den Befehl mit dem sie gestartet wurden. grep -i /PFAD/ZUR/BINARY sucht in der Liste nur nach Zeilen die den Pfad enthalten. AWK filtert die 1. Spalte dieser liste und WHILE READ startet eine Schreife für jede PID.
Damit kannst du alle Prozesse von /bin/irgendwas killen, nicen, ärgern oder sonstwas treiben.
pidof /usr/bin/firefox-bin
aufrufen. Sollte genauso funktionieren. Du benötigst NICHT den namen des Prozesses inkl. aller Parameter.Naja, ansonsten kannst du das noch mit der folgenden leichtzumerkenden Befehlskette nach dem Prozessnamen filtern. Das brauchst du wenn du nur eine ganz bestimmte instanz einer binary zb.
/bin/bash /usr/libexec/irgendwas -o blah1 -o blah2 ...
aber nicht alle laufenden Prozesse erwischen.ps -A -o pid,command | grep -i /bin/bash | awk '{ print $1}' | while read PID; do echo "Prozesskennung: $PID"; done
Wobei /bin/bash der pfad des Programmes das du suchst ist. ps -Ao pid,command listet ALLE prozesse, aber nur die PID und den Befehl mit dem sie gestartet wurden. grep -i /PFAD/ZUR/BINARY sucht in der Liste nur nach Zeilen die den Pfad enthalten. AWK filtert die 1. Spalte dieser liste und WHILE READ startet eine Schreife für jede PID.
Damit kannst du alle Prozesse von /bin/irgendwas killen, nicen, ärgern oder sonstwas treiben.
Wollte noch hinzufügen:
Ich selbst bevorzuge immer die XPG4-Konformität. Damit ist es eigentlich niemals notwendig
mit ps gleichzeitig grep zu benutzen - und es ist sicherer, da irrtümer ausgeschlossen sind.
Und es macht die Sache wirklich einfach um automatisch Prozesse zu killen.
PID=$(UNIX95= ps -C firefox -o pid=)
Wichtig: UNIX95 ist die XPG4-Directive - eine temporaere variable die nie exportiert wird oder gesetzt wird.
hinter dem Gleichheitszeichen ist eine leerstelle!)
man PS
alle UNIX-derivate sind XPG4-konform - darum funktionier das wunderbar auf HP-UX (im HP-IT-Ressource-Centre gibt es unzaehlige Infos darüber), auf Sun, auf Linux, etc. p.p.
Ich selbst bevorzuge immer die XPG4-Konformität. Damit ist es eigentlich niemals notwendig
mit ps gleichzeitig grep zu benutzen - und es ist sicherer, da irrtümer ausgeschlossen sind.
Und es macht die Sache wirklich einfach um automatisch Prozesse zu killen.
PID=$(UNIX95= ps -C firefox -o pid=)
Wichtig: UNIX95 ist die XPG4-Directive - eine temporaere variable die nie exportiert wird oder gesetzt wird.
hinter dem Gleichheitszeichen ist eine leerstelle!)
man PS
alle UNIX-derivate sind XPG4-konform - darum funktionier das wunderbar auf HP-UX (im HP-IT-Ressource-Centre gibt es unzaehlige Infos darüber), auf Sun, auf Linux, etc. p.p.