Belirli bir işlemi ilk bakışta nasıl görebilirim?


47

Belirli bir süreci takip etmek için üstte nispeten sade bir seçenek var mı?
İdeal olarak, süreci insan tarafından okunabilir bir değerle tanımlayarak mı? mesela chromeya java.

Başka bir deyişle, en üstteki tüm genel bilgileri görmek istiyorum, ancak sonuçların sağlanan parametrelere göre filtrelenmesini istiyorum. 'krom' veya 'java'


1
denedin top | grep chromemi
Pandya

1
Ayrıca ps -x | chromepid (pid gösterildi 2034) ve sonratop | grep 2034
pandya

top | grep chromemükemmel çalıştı - teşekkürler!
Michael Coleman

@Pandya - ayrıca, aradığım süreç sadece birkaç saniye sürdü (bir entegrasyon testi sırasında node.js) - bu ps -x | process_name, PID'yi kullandığımda , işlemi tekrar çalıştırdığımda PID farklıydı ve bu nedenle orijinal PID tanımlamaz.
Michael Coleman

Yanıtlar:


24

Basitçe kullanabilirsiniz grep:

NAME
       grep, egrep, fgrep, rgrep - print lines matching a pattern

SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       grep  searches  the  named  input  FILEs (or standard input if no files are named, or if a single
       hyphen-minus (-) is given as file name) for lines containing a match to the  given  PATTERN.   By
       default, grep prints the matching lines.

İstediğiniz çıktıyı elde etmek için aşağıdaki komutu çalıştırın (ex-chrome):

top | grep chrome

Burada kullandığımız grepboru hatları ile |öylesine top& grepkoşmak paralel; topçıkış grep(giriş olarak) verilir ve grep chromeeşleşen satırları durdurulana chromekadar filtreler top.


1
teşekkürler, başkalarının kendi tercihleri ​​olduğunu biliyorum, ama bu cevabı sevdim çünkü anlaşılması kolay ve dolayısıyla gelecekte hatırlamak da kolay! - Çok fazla oy alırdım ama yeterince itibarım yok ...
Michael Coleman

3
Bu, yalnızca işlem üstte görüntülenen çıktıda olduğunda çalışır. @ Ramesh'in cevabının kabul edilen cevap olması gerektiğini düşünüyorum
jb,

@JamieBullock topsadece soru ile ilgilenir ve OP temelli işlemi filtrelemek ister top.
Pandya

@Pandya aslında, kodumdaki bir hataya dayandığından önceki yorumumu geri çekiyorum. Yine de @ Ramesh'in cevabının daha iyi olduğunu düşünüyorum (ve aynı zamanda en üste dayalı süreci filtreler). Sizinkini kolayca kırabilirim örneğinsleep 10 & top | grep sleep
jb

Unix.stackexchange.com/a/165343/48973 sayfasını daha çok seviyorum çünkü başlıkları gösteriyor.
Ryan,

39

Buradaki diğer cevabımdan , şöyle bir şey yapabilirsin.

top -p `pgrep "java"`

4
top -p `pgrep "java"`bana bir bash kabuğunda aşağıdaki hatayı veriyor top: -p requires argument. top -ppgrep -d ',' "apache2" benim için çalıştı , ama komutun ne yaptığını gerçekten anlamadım - birden çok argümanla başa çıkmanın yolu bu mu?
Michael Coleman,

@Ramesh'in pidçalışmaya ayrılmış virgül vermesi gerekir .
Kannan Mohan

3
Bu doğru cevap.
j03m

1
+1 Bu doğru cevap. "top | grep Chrome" oldukça barbardır, çünkü başlık ve sütun etiketlerinde olduğu gibi kaybedilen şeyleri "Chrome" ile eşleştirmeyen TÜM ÇIKIŞLARININ tümünü yakalar. Pgrep'in çıktısıyla bir alt kabuk kullanmak, unix felsefesinin doğru bir uygulamasıdır.
John M Naglick

2
@loretoparisi, kullandığınız seçicinin birden çok işlemle eşleşmesi nedeniyle olabilir. Bir veya daha fazla eşleşen işlemle çalışan bir komut için bu cevaba bakın .
Michael Hays

21
top -p `pgrep -d "," java`

Açıklama:

  1. top -p pid1,pid2: birden fazla işlem bilgisini gösterme, ödemenin ayrılması gerekir ,
  2. pgrep -d "," java: tüm java programlarının kodlarını yazdırın, kodlar varsayılan olarak bir newline ile ayrılır. üst tarafından gerektiği -d ","şekilde ayırmak için kullanın ,.

Eğer böyle bir hata görürseniz top: -p argument missing, java programının çalışmadığı, yani pgrep'in çıktısı olmadığı anlamına gelir.


1
Bu çözüm top -p sadece pgrep "java" `` kullanmaktan daha iyi çalışır . teşekkür ederim.
loretoparisi

1
pgrepÇıkış kodunu kontrol ederek hatayı önleyin :pids="$(pgrep -d, java)" && top -p "$pids"
syme

12

OpenBSD'de top, sadece basın gve filtrelemek istediğiniz komut adını girin.

In topörneğin Ubuntu, basın ove girmek mesela COMMAND=chromesadece girişleri göstermek için COMMANDeşit sütuna chrome.

Aynı kullanan linux'lar On topUbuntu olarak uygulanmasını okumak bir pencere içinde FİLTRELEME'ye bölümünde topmanuel.


7

Başka iyi cevaplar sağlandı, ancak bir süre önce ptop adlı, bana iyi hizmet eden bir senaryo yazdım:

#!/bin/sh
top -p $(pidof "$@" |sed s#\ #,#g) 2>/dev/null
if [ $? -ne 0 ]; then
  echo No processes with the specified name\(s\) were found
fi

Bu, belirtilecek birden fazla işlem ismini destekler (gibi ptop bash chrome) ve belirtilen isimlerden herhangi birinin çalışıp çalışmadığı durumlarda daha iyi bir hata mesajı sunar.


3

İçeride kalmak topve diğer tüm işlemleri bağlam için açık tutmak istiyorsanız, Lişleminizi aramak için tuşuna basabilirsiniz :

Locate string chrome

Bu chrome, adındaki tüm işlemleri vurgulayacak ve görüntülemeye getirecektir. &Bir sonraki maça gitmek için kullanın .

cİşlem adını ve tam komutu göstermek arasında geçiş yapmak için tuşuna basabilirsiniz .


Bu ^ çünkü RTFM insanlar! man top | less +/5d
cprn

0

Belirli işlemleri izole etmek için üstte bir filtre de kullanabilirsiniz. Filtre istemini getirmek için 'O' tuşuna basın. Ardından FIELD = value olarak biçimlendirilmiş bir filtre yazın. Örneğin, tüm tmux işlemlerini filtrelemek için şunu kullanın:

COMMAND=tmux

Filtreleri sıfırlamak için '=' kullanın. En üstteki sayfadaki 'FILTERING' başlıklı bölüme bakın.

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.