Как убить процесс в MacOS? - PullRequest
56 голосов
/ 24 мая 2009

Я пытался kill -9 698, но процесс не умер.

$ ps -ef | grep chromium
  502   698   811   0   0:01.24 ??         0:07.28 /Users/lucius/chromium/src/xcodebuild/Debug/Chromium.app/Contents/MacOS/Chromium
  502   854   732   0   0:00.00 ttys001    0:00.00 grep chromium
$ kill -9 698


$ ps -ef | grep chromium
  502   698   811   0   0:01.24 ??         0:07.28 /Users/lucius/chromium/src/xcodebuild/Debug/Chromium.app/Contents/MacOS/Chromium
  502   854   732   0   0:00.00 ttys001    0:00.00 grep chromium

Ответы [ 8 ]

104 голосов
/ 24 мая 2009

Если вы пытаетесь уничтожить -9, у вас есть правильный PID, и ничего не происходит, значит, у вас нет прав для уничтожения процесса.

Решение:

$ sudo kill -9 PID

Хорошо, достаточно Mac OS / X выдает сообщение об ошибке для этого случая:

$ kill -9 196
-bash: kill: (196) - Operation not permitted

Итак, если вы не получаете сообщение об ошибке, вы почему-то не получаете правильный PID.

7 голосов
/ 28 апреля 2016

В некоторых случаях вы можете захотеть убить весь процесс, запущенный на определенном порту. Например, если я запускаю приложение узла на порту 3000, и я хочу убить его и запустить новое; тогда я нашел эту команду полезной.

Найдите идентификаторы процессов, запущенные на TCP-порту 3000, и уничтожьте его

kill -9 `lsof -i TCP:3000 | awk '/LISTEN/{print $2}'`
6 голосов
/ 24 мая 2009

Если вы знаете имя процесса, которое вы можете использовать:

killall Dock

Если вы не можете открыть Activity Monitor и найти его.

2 голосов
/ 27 августа 2014

Я только что искал это, так как нахожусь в подобной ситуации, и вместо kill -9 698 я попытался sudo kill 428, где 428 был pid процесса, который я пытаюсь убить. Это сработало чисто для меня, в отсутствие символа дефиса «-». Надеюсь, это поможет!

2 голосов
/ 24 мая 2009

Учитывая путь к вашей программе, я предполагаю, что вы в настоящее время запускаете его под XCode и, вероятно, находитесь в точке отладки. Процессы не могут быть остановлены в этом состоянии из-за базовой реализации точек останова.

Первым шагом будет переход к процессу Xcode и остановка отладки. Если по какой-то странной причине вы потеряли доступ к XCode (возможно, XCode потерял доступ к своему подпроцессу GDB), тогда решение - убить процесс GDB. В более общем смысле, решение здесь заключается в уничтожении родительского процесса. В вашем случае это PID 811 (третий столбец).

В этом случае нет необходимости использовать -9.

2 голосов
/ 24 мая 2009

Если kill -9 не работает, то не будет killall (или даже killall -9, что было бы более "интенсивно"). По-видимому, процесс хромирования застрял в непрерывном системном вызове (то есть в ядре, а не в пользовательском пространстве) - я не думал, что в MacOSX осталось что-то из этого, но я думаю, что всегда есть еще один :-(. Если это У процесса есть управляющий терминал, вы можете, вероятно, справиться с ним и убить его в фоновом режиме; в противном случае (или если интенсивное убийство не сработает, даже если процесс заблокирован) у меня нет идей, и я думаю, что вам, возможно, придется перезагрузиться : -. (

1 голос
/ 09 мая 2013

Я обнаружил, что если kill -9 PID не работает и вы владеете процессом, вы можете использовать kill -s kill PID, что удивительно, так как на странице руководства написано, что вы можете kill -signal_number PID.

0 голосов
/ 02 мая 2019

Недавно я столкнулся с подобной проблемой, когда редактор атомов не закрывается. Ни один не отвечал. Kill / kill -9 / принудительный выход из Activity Monitor - не работает. Наконец пришлось перезагрузить мой макинтош, чтобы закрыть приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...