Ben hiçbir zaman bu kaçamaz terminalde bir program çalıştırıyorum Ctrl- Cve ben öldürmek istiyorum. PID'sini nasıl bulabilirim?
Ben hiçbir zaman bu kaçamaz terminalde bir program çalıştırıyorum Ctrl- Cve ben öldürmek istiyorum. PID'sini nasıl bulabilirim?
Yanıtlar:
Başka bir terminal açın ps ax | grep foo
ve yanıt vermeyen programın adı foo'dur. Bu şuna benzeyen 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 çıktı satırının ilk alanı, eşleştirilen programın İşlem Kimliğini temsil eden bir sayıdır grep
(sonuncuyu güvenli bir şekilde görmezden gelebilirsiniz, bu da grep
kendisini temsil eder).
Sorunlu süreci durdurmak için şunları yapın:
kill pid
pid programın İşlem Kimliğidir. Kararınızı hangilerinin eşleştirilmesi gerektiği konusunda kill
kullanmak zorunda kalabilirsiniz veya top
bunun yerine kullanabilirsiniz . kill
Kendi başına kullanmak , programın kendisinden sonra düzgün bir şekilde temizlenmesini sağlayan ilk denemeniz gereken SIGTERM'i gönderir. SIGTERM başarısız olursa, kuvvetlendirir ilaçtır SIGHUP, deneyin: kill -HUP pid
. Her şey başarısız olursa, SIGKILL'i yollayın. Ancak, bunu yalnızca son çare olarak yapmalısınız, çünkü SIGKILL, çekirdeğin temizleme için derhal işlemi sonlandırmasına neden olmaz. Bu, bazen veri bozulmasına veya başka sorunlara neden olabilir. Bu yüzden tekrar, sadece son çare olarak SIGKILL gönder. Bunu yapmak için kill -KILL pid
veya yapın kill -9 pid
.
Grafik bir arayüz kullanıyorsanız, elbette, işi yapmak için bu çılgın komut satırı işleriyle kandırmanıza gerek yok. Sadece "Sistem Monitörü" nü açın, İşlemler sekmesine gidin, durdurmak istediğiniz işlemi seçin (Hm,% 90 CPU'yu kullanan olabilir mi?) Ve sağ tıklayın. İşlem zaten durdurulduğundan, (sorun değil mi?) Sonuçta ortaya çıkan menüden İşlemi Sonlandır veya İşlemi Sonlandır'ı seçin.
Koanhead'e Kredi
kill -9
kötü tavsiyedir. Düzeltmek için cevabı değiştirdim.
ping
komutuyla bir döngü içeren bir işleve sahibim sleep
. Unix.stackexchange.com/a/275826/72988’e göre Ubuntu’da olmadan mümkün değildir multiplexer
.
Aynı komutları pgrep, pkill, pidof vb. İle yapabildiğiniz zaman bu kadar uzun komutlara ihtiyaç olduğunu sanmıyorum.
pgrep:
pgrep [options] pattern
AÇIKLAMA: pgrep şu anda çalışmakta olan işlemlere bakar ve seçim kriterlerini stdout ile eşleşen işlem kimliklerini listeler. Bütün kriterlerin eşleşmesi gerekiyor. Örneğin,
Root'un sahip olduğu sshd isimli süreci bulmak.
$ pgrep -u root sshd
Kök VEYA daemon'a ait işlemleri listeler.
$ pgrep -u root,daemon
pidof:
AÇIKLAMA :
Pidof, adlandırılan programların işlem kimliklerini (pids) bulur. Bu kimlikleri standart çıktıya yazdırır.
sözdizimi: pidof program_name
Bir programı pid ile öldürmek için pkill örneği kullanın:
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
-f
flag: İşlem_adı'nı arar (bkz. man pkill)
-o
flag: Eşleşen işlemlerden yalnızca en eski olanı seçin.
-n
bayrak: Yalnızca eşleşen işlemlerin en yenisini seçin.
-l
flag: İşlem adını ve işlem kimliğini listeleyin.
Çalışan bir programın yardımını bilmenin en kolay yolu şunları kullanmaktır:
pidof <application name>
Örneğin, vim başlattıysanız ve ücretini bilmek istiyorsanız:
pidof vim
Unutmayın, başlatılan tam program adını vermeniz gerekecek.
Örneğin, vi kullanıyorsanız ve çalıştırdığınızda pidof vim
doğru sonuçlar alamazsınız.
Daha pidof
fazla bilgi için kullanım kılavuzuna bakınız .
pidof mysqld
bir PID döndürür. Ancak, eğer bir pidof Mariadb
şey yazmazsam döndürülür. Hem MariaDB hem de MySQL için aynı PID mi?
Daha açıklayıcı bir çıktı elde etmek için "-i" ekleyerek ve "ax" yerine "aux" kullanarak büyük / küçük harf duyarlı bir arama kullanmanın güzel olduğunu gördüm:
ps aux | grep -i firefox
Kullanabileceğiniz tüm işlemleri öldürmek istiyorsanız:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
Bu güçlü bir ölüm. Yumuşak bir öldürme istiyorsanız, "-9" bırak.
ps aux | grep -i firefox...
işlemi de öldürür , çünkü firefox
komutun içindeki metni içerir !
grep -i firefo[x]
sadece firefox'la eşleştirmek için kullanabilirsiniz
Ubuntu 16.04 LTS çalışan kişiler için, sen gerekir kullanmak ps ax
ve sadeceps
aksi takdirde sadece konum özellikle terminali örneğinden yumurtlama işlemlerini alacak, komut satırına. (Genellikle sadece 'Bash' [içindesin kabuk ] ve 'ps' [az önce koştuğunuz]
ps -e
(hepsini gösterir) ve ps -ejH
(bir süreç ağacını gösterir).
Ayrıca top
, Sistem Monitörü'nün metin bir sürümü olan başka bir terminal açabilir (veya başka bir tty'ye geçebilir) ve çalıştırabilirsiniz . İlk sütun K, PID'ye girip ardından göndermek için sayısal bir sinyal girerek öldürebileceğiniz her çalışan işlemin PID'sini listeler .
Yapabilirsin:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
önce iki boru işlem bilgisi alır, sonra eski okul kesimini kullanarak PID sütunu almaya çalışırız, sonra ortaya çıkan PID'yi öldürmek için veririz.
kill -9
Bir süreci öldürmek zorunda olduğunuz en büyük silahtır. SIGKILL'a başvurmadan önce, sürecin kaynaklarını temizleme şansı vermek için daha yumuşak bir sinyal almaya çalışmalısınız.