“Çıkmaya Zorla” dan daha güçlü bir şey var mı?


24

Ölmeyecek bir uygulamam var: rıhtımdan gitti, ama pencere kaldı (eğer bir fare ile oynanırsa). CPU kullanmıyor, ama ben gitmesini istiyorum.

Gerçekten bir uygulamayı gerçekten öldürmek için "Çıkma Gücü" nden daha güçlü bir şey var mı ?


Daha güçlü olup olmadığından emin değilim, ancak Uygulamalar> Yardımcı Programlar> Etkinlik İzleyici'yi deneyin. Süreci bulun ve Zorla Çık. Bu işe yaramazsa, işlem numarasını not alın, Terminal'e gidin ve "işlem numarası #" olan "kill #" yazın. HTH
David DelMonte 20:12

6
güç düğmesi?
Daniel

1
@DanielLawson Ne yazık ki, bu durumlar genellikle bununla sonuçlanır.
CajunLuke 20:12

1
David: Apple'ın "Force Quit" dediği şeyin, onu nasıl elde ederseniz edin aynı olduğunu farz ediyorum, ama ben de denedim, etkisiz.
Ken

Yanıtlar:


14

Uygulamanın adını biliyorsanız, hala orada çalışıp çalışmadığını görmek için Aktivite İzleyicisi'ne göz atabilir ve Zorla Çıkmayı deneyebilirsiniz. Bu işe yaramazsa, uygulamanın işlem kimliğini (ödeme) not alın. Terminal'e gidin ve kill [pid]"[pid]" yerine daha önce not ettiğiniz numarayı yazın. Bu işe yaramazsa, deneyin kill -3 [pid]ve işe yaramazsa deneyin kill -9 [pid]. Süreç (bu olası değildir) farklı bir kullanıcı tarafından aitse, değiştirmek gerekebilir killile sudo killve istendiğinde şifrenizi yazın.

Uygulama Aktivite İzleyicisi’nde görünmüyorsa veya kullanamıyorsanız kill, pencere başka bir yerde kalmış kalmış olabilir ve uygulama artık çalışmıyordur. Bu durumda, bazen (her zaman değil) çalışabilir killall SystemUIServerveya killall Dock.

Bunların hiçbiri işe yaramazsa, oturumu kapatıp tekrar açmanız veya yeniden başlatmanız gerekir. Birkaç kez bu noktaya geldiğimde, uygulama o kadar sıkıştı ki oturumu kapatmayı veya kapatmayı engelledi, bu yüzden yeniden başlatmak zorunda kaldım.


Bunların hepsini değiştirdim ( sudoişlem bana ait olsa bile), hiçbir değişiklik yapmadan. Will killall SystemUIServerpencere pozisyonlarını unutmadan gibi benim diğer açık uygulamalardan herhangi birini etkileyecek?
Ken

2
gentmatt: -3'e göre kill -lSIGQUIT ve -9 SIGKILL'dir (“yakalanamaz, göz ardı edilemez öldürme”).
Ken

1
@gentmatt 3, işleme sinyale müdahale etme ve temizleme yapma yeteneği veren QUIT sinyalidir. 9, KILL "yakalanamaz ve tutuşmaz" dır. Gönderebileceğiniz başka sinyaller yığını var; man killhepsini görmek için (şimdiye kadarki en iyi 10 UNIX komutunda bulunan) komutunu çalıştırın .
CajunLuke

1
Normalde sadece -9 öldürürüm. -3, "Zorla Çıkma" den daha güçlü değildir
segfault

3
@BoTian Doğru; Doğrudan -9'a atlıyorum. Bazen Force Quit ile hiç uğraşmıyorum. Ancak ne yaptıklarını bilmeyen bir kullanıcı için işe yarayabilir ve zararlı olma olasılığı daha düşüktür. Ayrıca çok uzun sürmez, bu nedenle beklenen sonuç oranına harcanan zaman o kadar da kötü değildir.
CajunLuke

7

Zorla sonlandırma penceresi killallve killtümü gönderme işlemi varsayılan olarak TERM sinyallerini işler. Bu killall -killişe yaramazsa kullanabilirsiniz .

Killall aracı, kill (p) tarafından yapılan seçimlerin aksine, adı ile seçilen işlemleri öldürür. Varsayılan olarak, procname adıyla eşleşen, killall'ın ismiyle aynı olan gerçek bir UID ile tüm işlemlere bir TERM sinyali gönderir. Süper kullanıcının herhangi bir işlemi öldürmesine izin verilir.

sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }'Zorla çıkma penceresinden bir uygulamayı çalıştırıp çıkarsanız, sinyal genellikle -15 (TERM) olarak gösterilir. Ancak, Aktivite İzleyiciden bir arka plan işleminden (veya Dock'ta gösterilmeyen bir uygulamadan) vazgeçtiğinizde, sinyal genellikle -9 (KILL) olarak gösterilir.

SIGTERM, öldürme veya öldürme komutları tarafından bir işleme gönderilen varsayılan sinyaldir. Bir sürecin sonlandırılmasına neden olur, ancak SIGKILL sinyalinin aksine, işlem tarafından yakalanabilir ve yorumlanabilir (veya yoksayılabilir). Bu nedenle, SIGTERM, işlemlerin güzel bir şekilde sonlandırılmasını, dosyaların temizlenmesini ve kapatılmasını sağlayan bir işlem istemeye benzer. Bu nedenle, kapatma sırasındaki birçok Unix sistemlerinde, SIGTERM'i kapatmak için gerekli olmayan tüm işlemlere SIGTERM verir, birkaç saniye bekler ve ardından kalan tüm işlemleri zorla sonlandırmak için SIGKILL verir.


Burada iyi bir bilgi var, ancak bu süreci öldürme biçimlerinin hiçbiri, bunun üzerinde hiçbir etkiye sahip görünmüyor.
Ken

İşe yaramazsa SIGKILL, uygulama muhtemelen kesintisiz bir uyku modundadır ve yapabileceğiniz hiçbir şey yoktur (yeniden başlatmadan kısa).
Blacklight,

Merak ediyorum, bu mail.app veya pages.app gibi bir kullanıcı uygulaması mıydı, yoksa bunun bir şekilde mi, Spotlight gibi bir sistem işlemi mi yoksa Plex gibi bir uygulama arka planı işlemi mi (kaldırmakta sorun yaşıyorum) olduğunu merak ediyorum.
David DelMonte

6

Force Quit, Activity Monitor killve diğer yöntemlerin çalışmadığı durumlar yaşadım ve Mac'im bu yüzden kapanamadı.

Bu durumda, sudo shutdown -r nowhiçbir şey olmadığında bir çalışmış ve muhtemelen güç düğmesi üzerinden sert bir şekilde kapatılmasından daha iyidir.


1

Yukarıdaki cevaplarda olduğu gibi SIGKILL, herhangi bir işlemi sonlandırmanın en güçlü yolu örn kill -9 process_id.

Ancak, imkansız ne süreçleri var Force Quitne de kill. Süreç olarak çağırdılar zombie.

İşte zombieiki dakikalık bir süreç yaratacak kısa bir senaryo :

perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'

Yukarıdaki betiği Terminal'de çalıştırın; sıradaki gibi çıktı alın:

     unkillable pid:50571
        UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
        501 47380 47379     4006   0  31  0  2448416   2900 -      S                   0 ttys000    0:00.36 -bash
        501 50570 47380     4006   0  31  0  2443512   1424 -      S+                  0 ttys000    0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570     2006   0   0  0        0      0 -      Z+                  0 ttys000    0:00.00 (perl)
        501 12795 12794     4006   0  31  0  2448296   1752 -      S+                  0 ttys001    0:00.75 -bash
        501 50123 50122     4006   0  31  0  2448296   2688 -      S+                  0 ttys002    0:00.14 -bash

Engellenemez işlem için durum sütununu kontrol ederseniz (bu durumda: 50571) Zbayrağı görürsünüz , ne anlama geliyor zombie.

Herhangi bir killsinyal göndermeyi deneyebilirsiniz (örn. kill -9 50571) Ve işlem devam edecektir. Her neyse, sisteminize çok fazla zarar vermez, çünkü aslında yoktur - sadece süreç tablosunu doldurur.

Yukarıdaki örnekte, 120 saniye içinde silinir.


0

Yapmanız gereken şey bu:

  1. Etkinlik Monitörü'nde, işlemi çift tıklayın VEYA işlemi açmak için Bilgi simgesine tıklayın.
  2. İşlem # satırında işlem # satırını işlem adınız (####) olarak görürsünüz, burada "####" işleminizin numarasıdır.
  3. Terminali açın ve tırnak işaretleri olmadan "sudo kill ####" yazın ve enter tuşuna basın
  4. Parolanızı girin, terminal buraya girişinizi göstermeyecek
  5. İşlem öldürüldü.

Böyle bir işlem, kaldırma girişiminde bulunacaksanız, en iyi durumda güvenli modda kaldırılır.

Şerefe, Bryan

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.