Как я могу убить процесс по его имени?


44

Иногда я замечаю, что процесс Pythonзавис. Затем я убью его через монитор активности, и все в порядке.

Я бы хотел убить этот процесс в Терминале. Тем не менее, поиск PIDкажется немного ненужным, потому что есть только один процесс по имени Python.

Можно ли убить процесс его уникальным именем?

Ответы:


52

Вы должны быть в состоянии выполнить команду sudo killall Python.

Вам нужно работать от имени пользователя root, поскольку Python принадлежит пользователю root, а не пользователю.


Я сделал это:No matching processes belonging to you were found
Gentmatt

1
Процесс Python не принадлежит вашему пользователю. Попробуйте как корень вместо: sudo killall Python.
HenningJ

1
@HenningJ Судо работал по какой-то причине. Я только что увидел, что этот процесс принадлежит мне. Я мог бы убить процесс без, sudoкогда я убил его, используя его PID. Зачем?
Gentmatt

1
Я думаю, это потому, что использование PID не зависит от пользователя / root, а имя процесса. Я отредактирую этот ответ, чтобы отразить sudo.
Мэтт Лав

Это также работало для нескольких процессов с одинаковыми именами, приятно
chrismarx

21
sudo killall -s SIGINT "process name"

Если вы не можете быть sudo, потому что он попросит пароль, и я чувствую, что вы не хотите этого в сценарии. pkill прийти на помощь :)

pkill -9 "process name"

5

Вы можете убить Приложения, используя Activity Monitor.app, являющийся решением с графическим интерфейсом. Это было бы простым «принудительным уходом». Однако в некоторых ситуациях это не всегда срабатывает по разным причинам!

Решение командной строки, как упомянуто в комментарии выше, содержит гораздо больше возможностей для пользователя. sudo killall Pythonили, если это запущенный программный процесс, он sudo killall /Applications/Whatever.appтакже принудительно завершает этот процесс.

Вы также можете принудительно завершить процесс, используя назначенный ему PID . В случае Activity Monitor.app это будет kill 25794илиkill -9 25794

введите описание изображения здесь

Еще несколько деталей:

Программа kill в Terminal просто принудительно завершает работу программы, как если бы она была удалена. (Это даже работает, когда вы SSH подключаетесь к вашему Mac из удаленного местоположения. Следуйте команде kill с идентификатором процесса (коротким PID) программы, которую вы хотите прекратить.

Если вы также не используете sudo, вы можете убивать только те программы, которые вам «принадлежат» - те, которые работают под вашей учетной записью. (Сама операционная система - root - всегда запускает собственные программы, и технически возможно, что другие люди, звонящие с дороги, запускают свои собственные программы, даже когда вы используете Mac!)

-9Флаг «не-catchable, не игнорируемые убийство.» Другими словами, это индустриально-сила убийца , который не принимает мольбы о пощаде из программы ты убиваешь.


5

Несмотря на то, что действительно использовать PID, я считаю следующее быть довольно эффективным:

ps aux | grep "String or name of process"

Эта строка возвращает множество информации о процессе (ах) сопоставления, и вы можете killили что-либо еще оттуда.


2
pkill -f "process name"

Основано на https://stackoverflow.com/a/22334807/1243763


1
Есть ли пидоф на macOS? И почему бы не использовать pkill, у которого нет проблем с дополнительным процессом?
Nohillside

согласен и я это пропустил. У меня был pidofбинарный как нестандартный псевдоним ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Итак, pkill -fимеет больше смысла.
Самир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.