Yanıtlar:
ps auxtam komut satırını (yol ve parametreler) içerir; pgrep yalnızca çalıştırılabilir adların ilk 15 karakterine bakarps auxHer işlemin tam komut satırını döndürür, ancak pgrepyalnızca çalıştırılabilir dosyaların adlarına bakar.
Bu, grepping ps aux çıktısının yoldaki herhangi bir şeyle eşleşeceği veya 'ikili' bir işlemin parametreleriyle eşleşeceği anlamına gelir.
ps aux | grep php5 eşleşecek /usr/share/php5/i-am-a-perl-script.plpgrep php5olmazSistemimden bir örnek alın - yalnızca python kullanacağız php5:
ps aux | grep python bize verir:izx 2348 0,0 0,7 514928 15644? Sl Jun24 0:00 / usr / bin / python / usr / lib / birlik-lens-video / birlik-lens-video izx 2444 0,0 0,9 547392 18864? Sl Jun24 0:01 / usr / bin / python / usr / lib / birlik kapsamı-video-uzaktan / birlik-kapsamı-video-uzaktan kök 2805 0.0 0.5 95436 12204? S Jun24 0:00 / usr / bin / python / usr / lib / sistem servisi / sistem servisi-d izx 6272 0,0 2,9 664400 60320? SNL Jun24 1:16 / usr / bin / python / usr / bin / güncelleme yöneticisi - haritada odaklanma kök 11729 0.0 0.9 180508 19516? S Jun25 0:00 python / usr / lib / yazılım özellikleri / yazılım özellikleri - dbus
pgrep pythonsadece 11729yukarıdaki listede göreceğiniz iadeler :kök 11729 0.0 0.9 180508 19516? S Jun25 0:00 python / usr / lib / yazılım özellikleri / yazılım özellikleri - dbus
/proc/<pid>/statama ondan almamasıdır/proc/<pid>/cmdline . Tamam, @Thorsen, böcek spreyini sen kazandın, bu bir böcek: P
pgrepmantıksız bir komut değil. İyi çalışıyor ve tasarlandığı gibi. Mesele şu ki, çalıştırdığınızda bir seçeneği kaçırıyorsunuz, bunun pgrepiçin suçlayamazsınız . Kullanımı ps aux | grep xxxgüvenilmezdir, bu yüzden grepçıktıdan kendini filtrelemek için bilgisayar korsanlarına ihtiyaç duyar ve bunun gibi yanlış pozitifler verebilir ps aux | grep root.
ps aux | grep xKomut "daha iyi" sonuçlar verir pgrep xEğer ikincisi ile bir seçenek eksik olduğu esasen.
Tam komut satırında arama yapmak için -fseçeneği kullanın, pgrepyalnızca varsayılan davranışı olan işlem adını değil, örneğin:
pgrep -f php5
Çizgiyi ps | grepfiltrelemeniz grepveya desen numaralarını kullanmanız gereken yapıdan farklı olarak , pgrepsadece tasarım yoluyla kendini seçmeyecektir.
Üstelik, şablonunuz ps USERsütununda göründüğünde , çıktıda istenmeyen işlemler elde edersiniz pgrep, bu kusurdan zarar görmez.
Sadece çantalar yerine tüm detayları görmek istiyorsanız, şunları kullanabilirsiniz:
ps wup $(pgrep -f python)
olandan daha basit ve daha güvenilir
ps aux | grep python | grep -v grep
veya
ps aux | grep p[y]thon
-a( --list-full) seçeneğini de ekleyin . (Eski pgrep yoktu -a, bunu yaptı-fl .)
pgrepgüzel bir çözüm bulmaya çalışanları veriyor . +1
/proc/self/cmdline"açıklayıcı" olarak değiştirilirse , pgrep -fa rubyörneğin eşleşmeyecektir. puma 3.3.0 (tcp://localhost:3000) [MIQ: Web Server Worker], iken "dumber" pgrep -a rubyolacak. İkincisinin de kandırılabileceğinden emin değilim.
pgrepve ps.
diff <(ps aux|grep x) <(pgrep x) # :)
Şu anda, pgrep ilk 4.096 karakterle sınırlı olduğundan (genellikle uzun bir sınıfyoluna sahip bir Java programının giriş sınıfını arayan Java kullanıcılarını etkiler) psolduğundan daha eksiksiz bir sonuç verecektir pgep -f. Bunu izleyen hata: https://gitlab.com/procps-ng/procps/issues/86