Как я могу убить процесс на основе аргументов его командной строки?
killall
, pgrep
И , pkill
похоже, работать только на основе имени процесса.
Мне нужно это, чтобы иметь возможность различать количество приложений, работающих на виртуальных машинах Java, где java
имя процесса для всех них и фактическое имя приложения можно найти, посмотрев на аргументы командной строки.
Это можно сделать вручную, ps aux | grep myapp.jar
а затем вручную убить pid из вывода, но я бы хотел, чтобы команда делала что-то эквивалентное автоматически.
bash: syntax error near unexpected token ';'
... Он работает в операторе case, когда за амперсандом следует;;
... может быть вы используете другую оболочку (?)zsh
, который поддерживает синтаксис, который я использовал. Оставляя это, работает в обоих, хотя, так что я удалил этоzsh
пользователей, чем где-либо еще? Кажется, я только нахожуzsh
здесь пользователей.Вы можете использовать,
htop
чтобы просмотреть все запущенные в данный момент процессы с их аргументами командной строки и убить выбранный процесс.источник
Замените
argument
ниже на регулярное выражение, которое должно полностью соответствовать командной строке процесса:источник
Если у вас нет pkill или чего-то еще, просто используйте proc / [1-9] * / cmdline
источник