Bir koşu terminali programının Süreç Kimliği (PID) nasıl bulunur?

89

Terminalde Ctrl - C ile kaçamadığım ve öldürmek istediğim bir program çalıştırıyorum. PID'sini nasıl bulabilirim?

    
sordu Jjed 25.08.2012 17:00

8 cevap

105

Başka bir uçbirim açın ve foo'nun yanıt vermeyen programın adı olduğu ps ax | grep foo dosyasını çalıştırın. Bu, aşağıdaki gibi görünen bir çıktı satırı döndürmelidir:

$ ps ax | grep firefox
2222 ?        S      0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ?        Sl   514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2    S+     0:00 grep --color=auto firefox

Her bir çıktı satırının ilk alanı, grep ile eşleşen programın İşlem Kimliği'ni temsil eden bir sayıdır ( grep 'nin kendisini temsil eden son olanı güvenli bir şekilde yok sayabilirsiniz.

Hatalı süreci durdurmak için şunu yapın: Pid, programın İşlem Kimliği ise kill pid . Hangi eşleşmelerin kill ed olması gerektiğine ilişkin kararınızı kullanmanız gerekebilir veya bunun yerine top değerini kullanabilirsiniz. % Co_de% 'i kullanarak SIGTERM'i gönderirsiniz; bu program, programın kendiliğinden düzgün bir şekilde temizlenmesine izin verdiğinden önce denemeniz gerekir. SIGTERM başarısız olursa, stonger tıbbı olan SIGHUP'u deneyin: kill . Her şey başarısız olursa, SIGKILL gönderin. Ancak, bunu sadece son çare olarak yapmalısınız, çünkü SIGKILL, çekirdeğin temizleme için herhangi bir olasılık olmaksızın işlemi sonlandırmasına neden olur. Bu bazen veri bozulmasına veya başka sorunlara neden olabilir. Yine, sadece SIGKILL'i son çare olarak gönderin. Bunu yapmak için, kill -HUP pid veya kill -KILL pid yapın.

Grafiksel bir arayüz çalıştırıyorsanız, elbette, işi yapmak için bu çılgın komut satırıyla uğraşmanıza gerek kalmaz. Sadece "Sistem Monitörü" ni açın, İşlemler sekmesine gidin, durdurmak istediğiniz işlemi seçin (Hm,% 90 CPU kullanıyor olabilir mi?) Ve sağ tıklayın. İşlem zaten durdurulduğu için (bu problem, doğru mu?) Sonuç İşlemi'ni Sonlandır veya İşlemi Sonlandır menüden seç.

  

koanhead 'e kredi verin

    
verilen cevap Jjed 13.04.2017 14:24
34

pgrep, pkill, pidof vb. ile aynı komutları yerine getirdiğinizde, böyle uzun komutlara ihtiyaç olduğunu düşünmüyorum ...

  • Çalışan Programın pidini almak için

pgrep:

   pgrep [options] pattern

AÇIKLAMA:     pgrep şu anda çalışan işlemleri inceler ve seçim ölçütleriyle eşleşen işlem kimliklerini stdout'a listeler. Bütün kriterlerin eşleşmesi gerekiyor. Örneğin,

  • Kök tarafından sahip olunan sshd adlı işlemi bulmak için.

    $ pgrep -u root sshd
    
  • Kök VEYA daemon'a ait süreçleri listeleyin.

    $ pgrep -u root,daemon
    

pidof:

TARİFİ

Pidof adlandırılmış programların işlem kimliklerini (pids) bulur. Bu kimlikleri standart çıktıya yazdırır.

sözdizimi:        pidof program_name

  • Bir programı pid kullanımıyla öldürmek için pkill örnek:

    pkill pid    
    pkill -f process_name    
    pkill -o process_name    
    pkill -n process_name    
    pkill -l process_name
    

    -f bayrağı: process_name öğesini arar (bkz. man pkill)
    -o flag: Yalnızca eşleşen işlemlerden en eskiini seçin.% %__a_d bayrağı: Yalnızca eşleşen işlemlerden en yeni olanı seçin.
    -n flag: İşlem adını ve işlem kimliğini listeleyin.

verilen cevap Prabhat Kumar Singh 16.06.2014 11:07
16

Çalışan bir programın pidini bilmenin en kolay yolu şudur:

pidof <application name>

Örneğin, vim'i başlattıysanız ve pidini bilmek istiyorsanız:

pidof vim

Başladığınız program adını sağlamanız gerektiğini unutmayın.

Örneğin, vi çalıştırıyorsanız ve pidof vim yürütürseniz, doğru sonuçlar elde edemezsiniz.

Daha fazla bilgi için pidof 's manuel sayfasına bakın.

    
verilen cevap jobin 16.06.2014 11:28
13

Daha açıklayıcı bir çıktı elde etmek için "-i" yi ekleyerek ve "ax" yerine "aux" sözcüğünü kullanarak büyük / küçük harfe duyarlı olmayan bir arama kullanmak güzeldi:

ps aux | grep -i firefox

Kullanabileceğiniz tüm süreçleri öldürmek isterseniz:

ps aux | grep -i firefox | awk {'print '} | xargs kill -9

Bu güçlü bir öldürme. Yumuşak öldürmek istiyorsanız "-9" u bırakın.

    
verilen cevap John Foley 24.12.2013 17:45
3

Yalnızca pid istiyorsanız (autokill komut dosyaları, vb. için kullanışlıdır)

pgrep -f desired_program_name
    
verilen cevap MikeL 10.01.2017 14:29
0

Başka bir terminali de açabilir (veya başka bir tty'ye geçebilirsiniz) ve temel olarak Sistem Monitörü'nün bir metin sürümü olan top dosyasını çalıştırabilirsiniz. İlk sütun, K tuşuna basarak PID'yi girerek ve ardından gönderilecek sayısal bir sinyali girerek öldürebileceğiniz her çalışan işlemin PID'sini listeler.

    
verilen cevap Waldir Leoncio 16.06.2014 13:01
0

Yapabilirsin:

ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9

ilk iki boru işlem bilgisini alır, daha sonra eski okul kesimini kullanarak PID sütununu almaya çalışırız ve daha sonra ortaya çıkan PID'yi öldürüriz.

    
verilen cevap Arian Soltani 27.09.2016 23:09
0

Ubuntu 16.04 LTS çalıştıranlar için , <%> co_de% komutunu kullanarak ps ax kullanmanız gerekir, aksi halde yalnızca içinde olduğunuz belirli terminal örneği (genellikle sadece 'bash' [olduğunuz kabuk] ve 'ps' [ne koştunuz])

    
verilen cevap cygnus_x1 10.09.2017 16:30

Etiketlerdeki diğer soruları oku