Jak mogę zabić proces na podstawie argumentów wiersza poleceń?
killall
, pgrep
i pkill
wydaje się, że działa tylko w oparciu o nazwę procesu.
Potrzebuję tego, aby móc rozróżnić kilka aplikacji działających na maszynach wirtualnych Java, gdzie java
jest nazwa procesu dla wszystkich z nich, a rzeczywistą nazwę aplikacji można znaleźć, patrząc na argumenty wiersza poleceń.
Można to zrobić ręcznie za pomocą, ps aux | grep myapp.jar
a następnie ręcznie zabijając pid z danych wyjściowych, ale chciałbym, aby polecenie automatycznie zrobiło coś równoważnego.
bash: syntax error near unexpected token ';'
... Działa w instrukcji case , gdy po ampersand następuje;;
... może używasz innej powłoki (?)zsh
, który obsługuje używaną składnię. Pozostawienie go działa w obu przypadkach, więc usunąłem gozsh
użytkowników niż gdzie indziej - wydaje mi się, żezsh
tutaj znajduję tylko użytkowników.Możesz użyć,
htop
aby wyświetlić wszystkie aktualnie uruchomione procesy wraz z ich argumentami wiersza poleceń i zabić wybrany proces.źródło
Zastąp
argument
poniżej wyrażeniem regularnym, które musi wypełniać całą linię poleceń procesu:źródło
Jeśli nie masz pkill lub cokolwiek innego, po prostu użyj proc / [1-9] * / cmdline
źródło