Wie kann ich einen Prozess basierend auf seinen Befehlszeilenargumenten beenden?
killall
, pgrep
und pkill
scheinen nur auf der Grundlage des Prozessnamens zu funktionieren.
Ich brauche dies, um in der Lage zu sein, zwischen einer Reihe von Anwendungen zu unterscheiden, die in virtuellen Java-Maschinen ausgeführt werden. Dabei java
ist der Prozessname für alle und der tatsächliche Anwendungsname kann anhand der Befehlszeilenargumente ermittelt werden.
Dies kann manuell durchgeführt ps aux | grep myapp.jar
werden, indem die pid manuell aus der Ausgabe entfernt wird, aber ich möchte, dass ein Befehl automatisch etwas Äquivalentes ausführt.
bash: syntax error near unexpected token ';'
... funktioniert in einer case- Anweisung, wenn auf das kaufmännische Und ein;;
... folgt Sie verwenden eine andere Shell (?)zsh
, was die von mir verwendete Syntax unterstützt. Das Auslassen funktioniert in beiden Fällen, also habe ich es entferntzsh
Benutzern als anderswo hat - ich scheinezsh
hier nur Benutzer zu finden .Sie können
htop
alle derzeit ausgeführten Prozesse mit ihren Befehlszeilenargumenten anzeigen und einen ausgewählten Prozess beenden.quelle
Ersetzen Sie
argument
unten mit einem regulären Ausdruck, der die gesamte Befehlszeile eines Prozesses umfassen muss:quelle
Wenn Sie pkill oder was auch immer nicht haben, verwenden Sie einfach proc / [1-9] * / cmdline
quelle