Ответы:
Вы можете использовать, pgrepпока включаете -fпараметры. Это позволяет использовать pgrepключевые слова во всей команде (включая аргументы), а не только в имени процесса.
pgrep -f keyword
На странице руководства :
-fШаблон обычно сопоставляется только с именем процесса. Когда-fустановлено, используется полная командная строка.
Если вы действительно хотите избежать использования pgrep, попробуйте:
ps -ef | awk '/[k]eyword/{print $2}'
Обратите внимание на []первую букву ключевого слова. Это полезный прием, позволяющий избежать совпадения с awkсамой командой.
kill -9 `pgrep -f keyword`
ps aux | grep chrome
[k]уловку pgrep -f. Мой скрипт выполнялся в подоболочке, поэтому я думаю, что он собирал свою родительскую команду (трудно сказать наверняка - возвращенный им pid исчез, когда команда была завершена!)
pkill -9 -f keyword?
Пытаться
ps -ef | grep "KEYWORD" | awk '{print $2}'
Эта команда должна дать вам PID процессов с KEYWORD в них. В этом случае awkвозвращает то, что находится во 2-м столбце вывода.
| head -1.
Чтобы убить процесс с помощью определенного ключевого слова, вы можете создать псевдоним в ~/.bashrc(linux) или ~/.bash_profile(mac).
alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
| head -1обертки делает все это красиво и аккуратно.