Альтернативы pgrep и pkill на Mac OS X?


23

Существуют ли альтернативы pgrepи pkillкоманды в Mac OS X или я должен просто создать для них псевдонимы, используя другие доступные мне команды?

Ответы:


11

Вы можете использовать MacPorts :sudo port install proctools

Вот результат port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)

3
proctools также доступен через Homebrew
Эндрю Маршалл

@AndrewMarshall прав. Для доморощенного попробуйтеbrew install proctools
cwd

18

На OS X Lion с домашним пивом :

$ brew install proctools

Это загружает, строит и устанавливает pgrep, pkillи pfind.


Будет ли возможно построить графический интерфейс для работы так, как это делает xkill, но для OSX
Jonas Oestman

11

Вам больше не нужна альтернатива: начиная с MacOS 10.8 pgrepи pkillдоступны по умолчанию.


10

Предполагая, что вы используете сравнительно недавнюю версию Bash на Mac, вы можете написать свою собственную версию pgrepкак функцию, а затем добавить ее в свой .bashrcфайл:

function pgrep() {
    ps aux | grep $1 | grep -v grep
}

Что касается pkillвы можете использовать следующее:

function pkill() {
    local pid
    pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
    kill -9 $pid
    echo -n "Killed $1 (process $pid)"
}

Я на Z Shell, хотя не должно быть никаких проблем в адаптации этого.
Eimantas

1
или / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') для более точного pgrep (только имя процесса, а не аргументы. Я использую / bin / kill по привычке, потому что Надежно требуется более одного PID, чтобы убить. Существуют и другие приемы, если вы контролируете регулярное выражение, чтобы вам никогда не приходилось 'grep -v grep' - таким образом вы можете pkill greps!)
jrg

Я предлагаю вам удалить functionключевое слово, оно устарело. Смотрите это сообщение
SiegeX

Ты обалденный.
Биджан

2

Proctools включает pgrepи pkillдоступен для OpenBSD и OSX. Это не было обновлено некоторое время, но это все еще должно работать (по крайней мере на OSX, который редко изменяет его ABI).


Proctools плохо компилируется со Snow Leopard

1

Вы могли бы попробовать killall. Это убивает процессы по имени. Любые процессы, соответствующие строке, которую вы передаете, уничтожаются.

killall httpd ( kill all apache processes )
killall php ( kill all php process )

Если вы делаете

killall -s man ( kill any manual page processes, if a user is using man [command]

он покажет вам список процессов, которые будут убиты, как показано ниже.

kill -TERM 70836

Если вы хотите другой сигнал, сделайте следующее

killall -9 processname

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.