Grep kullanmadan isme göre bir işlemi nasıl ararım?


62

Amacıyla kullanabileceğiniz bir süreç aramak için psbirlikte grep.

Örneğin, firefox’u aramak için

ps aux | grep firefox

Aynı cevabı kullanmadan nasıl alabilirim grep?


1
ps/grepÇözümün bu kadar iyi çalışması için neden bunu yapmak istediğinizi merak ediyorum.
nöronet

OP sadece sanırım daha kısa bir komut istiyor. Böyle bir şey ps -n <process name>olsaydı ihtiyacına cevap verirdi. ps -n firefoxbiraz daha kısa ps | grep firefox. Bir kullanıcı kimliği için pszaten filtreleme yapabilir pidveya işlem yapabilir , bu nedenle işlem adına filtre uygulamak makul bir sorudur.
Jochem Schulenklopper

Yanıtlar:


71

pgrepKomut ve bunun kardeş pkill, bu amaçla tam bulunmaktadır:

  • pgrep firefox komutları eşleşen tüm işlemleri listeler. firefox
  • pgrep -f firefox Tüm komut satırları eşleşen tüm işlemleri listeler. firefox
  • pgrep -x firefox komutları tam olarak eşleşen tüm işlemleri listeler. firefox
  • ... ve bunun gibi.

Ve doğal olarak, pgrepkendisini maçtan dışlayacaktır, bu nedenle grepilişkili olan ps | grepherhangi bir ayinden hiçbirine ihtiyaç duyulmaz.


Bunun için diğer araçlar kümesi pidofve killallkomutlarıdır. Bunlar pgrepve kadar esnek değil pkill.

  • pidof firefox komutu olan işlemleri listeler. firefox

24
ps -fC process-name

örnek:

ps -fC firefox

itibaren man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

Bu en iyi cevap ama maalesef OSX'de çalışmıyor. BSD ps -Cbayrağı tamamen farklı davranıyor - "CPU yüzdesinin hesaplanma şeklini değiştir"
mastaBlasta

2

topbüyük harfe çarptığınızda dize aramanıza olanak verir L; işlem vurgulanacak ve işlem listesini kaydırmak için yukarı ve aşağı ok tuşlarını kullanın. Benzer şekilde, htopkomut, vurduğunuzda belirli bir işlemi vurgulamanızı sağlar /. Ve \tüm işlemleri adında belirli bir dizeyle filtreleyecektir.

Awk isteyenler için, burada bir awk oneliner var: ps -eF | awk '/process-name/ {print $11}' . İle ps -eFişlem adı 11. sütunda zaman. Alternatif olarak, yaparsanız ps -eF | awk '{print $11}' | sort, alfabetik olarak sıralanmış işlem adlarının sıralanmış bir listesini alırsınız. lessUzun dosya listesini daha kolay görebilmek için onu komuta edin.


2

Harika bir numara

$ps -ejH

Tüm işlemleri isimlerle alacaksınız.

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Yönlendirmek ya da öylesine çıktıyı bir dosyaya kopyalayın ve ardından açın nano, Ctrl+ tuşlarına basın W ve istediğiniz adı arayabilirsiniz.


1

Ayrıca htopsonuçları eşleşen bir kullanıcı tanımlı dizeyle filtrelemek için F4 tuşuna basıp kullanabilirsiniz. Ayrıca F3 tuşuna basarak özel bir arama özelliğine de sahipsiniz.


1

İki işlem sorunsa, yalnızca grep kullanabilirsiniz :

grep firefox /proc/*/cmdline

0

Lennart Poettering Blog'unda bu ps takma adını okudum. Çıktı sistemd kontrol grubu ebeveynliğine göredir:

alias psc='ps xawf -eo pid,user,cgroup,args'
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.