Bir işlemi adına göre nasıl öldürebilirim?


44

Bazen sürecin Pythonkapandığını fark ediyorum . Sonra Aktivite Monitörü aracılığıyla öldürürüm ve her şey yolundadır.

Onun yerine bu işlemi Terminal'de öldürmek istiyorum. Ancak, bakmak PIDbiraz gereksiz görünüyor çünkü isminde sadece bir süreç var Python.

Bir süreci benzersiz ismiyle öldürmek mümkün mü?

Yanıtlar:


52

Komutu çalıştırabilmelisin sudo killall Python.

Kök olarak çalıştırmanız gerekir, çünkü Python kullanıcıya değil köke aittir.


Bunu yaptım:No matching processes belonging to you were found
Gentmatt

1
Python işlemi kullanıcınıza ait değil. Yerine root olarak Deneyin: sudo killall Python.
HenningJ

1
@ HenningJ Sudo nedense çalıştı. Sadece sürecin bana ait olduğunu gördüm. sudoKullanarak öldürdüğüm zaman süreci öldürebilirim PID. Neden?
Gentmatt

1
Bir PID kullanmak, kullanıcıya / köke özel değil, bir süreç adı olduğu için düşünüyorum. Yansıtmak için bu cevabı düzenleyeceğim sudo.
Matt Love

Bu aynı zamanda birden fazla özdeş isimlendirilmiş süreç için işe yaradı, nice
chrismarx

20
sudo killall -s SIGINT "process name"

Bir sudo olamıyorsanız, çünkü şifre isteyecek ve bunu bir komut dosyasında istemediğinizi hissediyorum. pkill kurtarma için gel :)

pkill -9 "process name"

5

Uygulamaları GUI çözümü olan Activity Monitor.app kullanarak öldürebilirsiniz. Bu basit bir "zorla bırakma" olurdu. Ancak, bu bazı durumlarda her zaman farklı nedenlerle işe yaramaz!

Yukarıdaki açıklamada belirtildiği gibi komut satırı çözümü, kullanıcı için çok daha fazla seçenek tutar. sudo killall Pythonveya eğer çalışan bir program süreci sudo killall /Applications/Whatever.appise, işlemi de bırakmaya zorlar.

Ayrıca, atanmış PID'sini kullanarak bir işlemi bırakmaya zorlayabilirsiniz . Aktivite Monitor.app olması durumunda kill 25794veyakill -9 25794

görüntü tanımını buraya girin

Biraz daha detay:

Terminal'de bulunan öldürme programı, zorla uzaktan kumandadaki gibi bir programdan çıkar. (Uzak bir konumdan Mac'inize SSH girdiğinizde bile çalışır. Sonlandırmak istediğiniz programın işlem kimliği numarasıyla (kısa PID) kill komutunu izleyin.

Ayrıca sudo kullanmıyorsanız, yalnızca “sahip olduğunuz” programları, yani hesabınız altında çalışarak öldürebilirsiniz. (İşletim sisteminin kendisi - root - her zaman kendi programlarını çalıştırır ve teknik olarak mümkün olanı Mac'i kullanırken bile yoldan araştıran diğer kişilerin kendi programlarını çalıştırmasıdır!)

-9Bayrak bir “non-catchable, ihmal edilemez öldürmek” dir. Bir başka deyişle, bu programın sen öldürme merhamet hiçbir savunmalarını kabul endüstriyel güçte suikastçı.


5

O halde gelmez PID'yi, oldukça verimli olmak için aşağıdaki gibi olacaktır:

ps aux | grep "String or name of process"

Bu satır eşleşen işlem (ler) hakkında bir çok bilgi döndürür ve siz killveya oradan ne yapabilirsiniz .


2
pkill -f "process name"

Göre https://stackoverflow.com/a/22334807/1243763


1
MacOS'ta bir pidof var mı? Ve neden ek işlem sorunu olmayan pkill'i kullanmıyorsunuz?
yokuş yukarı

katılıyorum ve bunu özledim. Ben pidofstandart olmayan takma adı olarak ikili vardı ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Yani, pkill -fdaha mantıklı.
Samir,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.