Çalışan bir terminal programının işlem kimliği (PID) nasıl bulunur?

Terminalde kaçamayacağım bir program çalıştırıyorum. Ctrl-C ve öldürmek istediğimi. Pıd'sini nasıl bulabilirim?

Başka bir terminal açın ve çalıştırın ps ax | grep foo burada foo yanıt vermeyen programın adıdır. Bu, böyle bir şeye benzeyen bir çıktı satırı döndürmelidir:

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

Her çıktı satırının ilk alanı, eşleşen programın İşlem kimliğini temsil eden bir sayıdır. grep (temsil eden sonuncuyu güvenle yok sayabilirsiniz grep kendisi.

Rahatsız edici süreci durdurmak için şunları yapın:kill pid burada pıd, programın İşlem kimliğidir. Eşleşmelerden hangisinin olması gerektiği konusunda kararınızı kullanmanız gerekebilir killed, ya da kullanabilirsin. top yerine. Kullanım kill kendi başına, programın kendisinden sonra düzgün bir şekilde temizlenmesine izin verdiği için önce denemeniz gereken SIGTERM'İ gönderir. SİGTERM başarısız olursa, daha güçlü bir ilaç olan sighup'ı deneyin: kill -HUP pid. Her şey başarısız olursa, SİGKİLL'İ gönderin. Ancak, bunu yalnızca son çare olarak yapmalısınız, çünkü SIGKILL çekirdeğin temizleme olanağı olmadan işlemi hemen sonlandırmasına neden olur. Bu, zaman zaman veri bozulmasına veya başka sorunlara neden olabilir. Yani yine, Sigkill'i sadece son çare olarak gönder. Bunu yapmak için şunları yapın kill -KILL pid veya kill -9 pid.

Bir grafik arayüzü çalıştırıyorsanız, elbette, işi yapmak için bu çılgın komut satırı şeyleriyle kandırmak zorunda değilsiniz. Sadece "Sistem Monitörü" nü açın, İşlemler sekmesine gidin, durdurmak istediğiniz işlemi seçin (Hm,% 90 CPU kullanan olabilir mi?) ve sağ tıklatın. Süreç zaten durdurulduğundan, (sorun bu, değil mi?) Sonuç menüsünden İşlemi Sonlandır veya İşlemi Öldür'ü seçin.

Kredi için koanhead

Aynı komutları pgrep, pkill, pidof vb. İle gerçekleştirebildiğiniz zaman bu kadar uzun komutlara gerek olmadığını düşünüyorum...

  • Çalışan bir Programın pıd'sini almak için

pgrepname:

   pgrep [options] pattern

tanım : pgrep, çalışmakta olan işlemlere bakar ve seçim ölçütleriyle eşleşen işlem kimliklerini stdout olarak listeler. Tüm kriterler eşleşmeli. Örneğin,

  • Root'a ait sshd adlı işlemi bulmak için.

    $ pgrep -u root sshd
  • Root VEYA daemon'a ait işlemleri listeleyin.

    $ pgrep -u root,daemon

pidofname of translators:

tanım:

Pıdof, adlandırılmış programların işlem kimliklerini (pıd'leri) bulur. Bu kimlikleri standart çıktıya yazdırıyor.

sözdizimi: pıdof program_adı

  • Bir programı pıd ile öldürmek için pkillexample kullanın:

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

    -f bayrak: işlem_adı arar (bkz.
    -o bayrak: Eşleşen işlemlerin yalnızca en eskisini seçin.
    -n bayrak: Eşleşen işlemlerin yalnızca en yenisini seçin.
    -l bayrak: İşlem adının yanı sıra işlem kimliğini de listeleyin.

Çalışan bir programın pıd'sini bilmenin en kolay yolu:

pidof <application name>

Örneğin, vım'i başlattıysanız ve pıd'yi bilmek istiyorsanız:

pidof vim

Başlatılan programın tam adını sağlamanız gerektiğini unutmayın.

Örneğin, vı çalıştırıyorsanız ve çalıştırırsanız pidof vim doğru sonuçlar alamayacaksın.

Başvurmak pidofdaha fazla bilgi için kılavuz sayfası.

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 buldum:

ps aux | grep -i firefox

Kullanabileceğiniz tüm işlemleri öldürmek isterseniz:

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

Bu güçlü bir cinayet. Yumuşak bir öldürme istiyorsan "-9" u at.

Yalnızca pıd'yi istiyorsanız (otomatik doldurma komut dosyaları vb. İçin kullanışlıdır...)

pgrep -f desired_program_name

Ubuntu 16.04 LTS çalıştıranlar için, sen zorunlu kullanmak ps ax ve sadece değil ps komut satırında, aksi takdirde, içinde bulunduğunuz belirli terminal örneğinden gelen işlemleri alırsınız. (genellikle sadece 'bash' [içinde bulunduğunuz kabuk] ve 'ps' [az önce koştuğunuz şey])

Ayrıca başka bir terminal açabilir (veya başka bir tty'ye geçebilir) ve çalıştırabilirsiniz top temel olarak Sistem Monitörünün bir metin sürümüdür. İlk sütun, çalışan her işlemin PID'SİNİ listeler; bu, tuşuna basarak öldürebilirsiniz K, pıd'yi girin ve göndermek için sayısal bir sinyal girin.

Yapabilirsin:

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

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

top

veya

screen -list|ls

tüm pıd'leri ilgili işlemle listele

kill -[pid]

Bu bir daldır [Ubuntu donduğunda ne yapmam gerekir?] (performance - What should I do when Ubuntu freezes? - Ask Ubuntu ) bu sorudaki ayrıntıların çok teknik hale gelmesini önlemek için bir referans olarak.

Bir *pidof * komutu var.