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, хоча у адаптації цього не повинно виникнути жодних проблем.
Еймантас

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.