Як я можу вбити процес за його назвою?


41

Іноді я помічаю, що цей процес Python повісив. Потім я вб'ю його через Activity Monitor і все буде добре.

Натомість я б хотів убити цей процес у терміналі. Однак, шукаючи PID здається непотрібним, тому що є лише один процес за назвою Python.

Чи можна вбити процес за його унікальною назвою?

Відповіді:


49

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

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


Я зробив це: No matching processes belonging to you were found
gentmatt

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

1
@HenningJ Sudo працював з якоїсь причини. Я просто бачив, що цей процес належить мені. Я міг би вбити цей процес sudo коли я вбив його, використовуючи його PID. Чому?
gentmatt

1
Я думаю, це тому, що використання PID не є специфічним для користувача / кореня, тоді як ім'я процесу є. Я відредагую цю відповідь sudo.
Matt Love

Це також працювало для декількох ідентично названих процесів, приємних
chrismarx

19
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

enter image description here

Декілька деталей:

Програма kill в Терміналі просто примушує вийти з програми, як би за допомогою пульта дистанційного керування. (Він навіть працює, коли ви в SSH в Mac з віддаленого місця. Дотримуйтесь команду kill з ідентифікатором процесу (короткий PID) програми, яку ви хочете припинити.

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

The -9 Прапор - це "непридатний, незнайний вбив". Іншими словами, це вбивця промислової сили, який не приймає жодної прохання про милість від програми, яку ви вбиваєте.


5

Хоча це робить використовуйте PID, я вважаю, що це досить ефективно:

ps aux | grep "String or name of process"

Цей рядок повертає хост інформацію про процес (и) відповідності, і ви можете kill або звідти.


1
pkill -f "process name"

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


1
Чи є pidof на macOS? І чому б не використовувати pkill, у якого немає проблеми додаткового процесу?
nohillside

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