Auf meinem System laufen zwei Python-Programme, sie heißen beispielsweise program x
und program y
.
Ich möchte die PID des Programms abrufen y
, aber nicht x
fü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 -f
Schalter verwenden pgrep
(versuchen Sie, man pgrep
mehr zu lesen).
pgrep -f x
sollte nur Programm x
und
pgrep -f y
bzw. nur Programm y
.
x
Wenn und y
nicht eindeutig genug sind und in zu vielen Zeilen enden, können Sie alternativ ps
und verwenden, grep
um 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 x
darin 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.