Wie bestimme ich die PID meines Python-Programms, wenn mehr als ein Python-Programm ausgeführt wird?

Wie bestimme ich die PID meines Python-Programms, wenn mehr als ein Python-Programm ausgeführt wird?

Auf meinem System laufen zwei Python-Programme, sie heißen beispielsweise program xund program y.

Ich möchte die PID des Programms abrufen y, aber nicht xfür mein Bash-Skript. Wenn ich verwende pgrep python, erhalte ich die PID von beiden und weiß nicht, welche welche ist.

Irgendwelche Ideen, wie ich in einem Bash-Skript den Unterschied zwischen den beiden erkenne?

Antwort1

Sie können mit der Argumentliste übereinstimmen, indem Sie den -fSchalter verwenden pgrep(versuchen Sie, man pgrepmehr zu lesen).

pgrep -f x

sollte nur Programm xund

pgrep -f y

bzw. nur Programm y.

xWenn und ynicht eindeutig genug sind und in zu vielen Zeilen enden, können Sie alternativ psund verwenden, grepum mehr Optionen zu haben.

ps ax | grep 'python x' | grep -v grep | awk '{print $1}'

Dieser Wille

  • alle relevanten Prozesse auflisten
  • grep für diejenigen, die python xdarin enthalten sind. Hier müssen Sie möglicherweise einen Pfadbezeichner hinzufügen wiepython ./path/to/x
  • Entfernen Sie den Grep-Befehl selbst aus der Liste der übereinstimmenden Prozesse.
  • Drucken Sie nur die erste Spalte, die die PID ist.

verwandte Informationen