Yanıtlar:
pgrepçıkış seçenekleri oldukça sınırlıdır. Neredeyse kesinlikle psönemli bilgileri almak için geri göndermeniz gerekir . Bunu, içindeki bir bash işlevini kullanarak otomatikleştirebilirsiniz ~/.bashrc.
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
Sonra komutu ile çağır.
ppgrep <pattern>
psbayraklar için kısa çizgi gerekir:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-rbu sadece bir liste alınmışsa komutu çalıştıracaktır.
ps fp $(pgrep -d, "$@")
Birleştirin pgrepile pskullanarak xargs!
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
Örneğin dene
pgrep -u user | xargs ps -f -p
tam bir işlem listesi almak için user.
Sütun adlarıyla ilk satırı tutmanız çok hoş. grepsütun adlarını daima bırakır.
Aşağıdaki sadece size PID + tam komut satırı verir. "Bütün bilgiler psyapar" için diğer cevaplara bakınız ...
Çoğu Linux dağıtımları kullanmak PROCPS-ng . 3.3.4'ten beri (2012'de yayınlandı), pgrep -a( --list-full) komut satırının tamamını gösterir.
Not: Varsayılan olarak, pgrep yalnızca çalıştırılabilir ada göre verdiğiniz kalıpla eşleşir. Eğer tam komut satırı ile eşleşmek istiyorsanız (grepping ps'in yaptığı gibi), -f( --full) seçeneğini ekleyin .
(Orijinal dahil eski sürümlerinde PROCPS proje), -lopsiyon bilgi gösterdi ama onun davranışları değişiyordu:
pgrep -fl Deseni tam komut satırıyla eşleştirdi ve tam komut satırını gösterdi.pgrep -ltek başına yalnızca çalıştırılabilir adla eşleşti ve yalnızca çalıştırılabilir ad gösterdi. Hangi kodu * BSD kullandığından emin değil, ancak man sayfaları eski -fldavranışı belgeliyor .
Maalesef -fltaşınabilir bile kullanamazsınız - son işlemlerde, -f( --list-name) her zaman yalnızca çalıştırılabilir adı yazdırır.
GNU sürümü pgrepiçin -i(büyük küçük harf duyarlılığı yoktur) desteklenmez ve uzun + bulanık çıktı elde edilir -af.
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
-a, --list-full
List the full command line as well as the process ID. (pgrep only.)
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
OSX'de (ve çıkarımla, BSD'de) -l( uzun çıktı ) birlikte -f( tam argüman listelerine göre ) tamamlandı komutunu görüntüler (büyük -iküçük harf duyarlılığı ekler):
$ pgrep -fil ssh
OUTPUT:
33770 ssh: abc@192.168.0.123-22 [mux] t
-l Long output. For pgrep, print the
process name in addition to the
process ID for each matching
process. If used in conjunction
with -f, print the process ID and
the full argument list for each
matching process. For pkill, dis-
play the kill command used for
each process killed.
Grep için -v seçeneğini kullanın - herşeyi döndürür, ancak istenen kalıbı döndürür.
ps -ef | grep <process> | grep -v grep
pgrep -u user | xargs ps -f -p
Olduğunu sanmıyorum, alabileceğiniz en fazla bilgi pgrep için -l seçeneğini kullanarak adı ve işlem kimliğidir.
ps her türlü biçimlendirme seçeneğini destekler, bu yüzden yazmayı kaydetmek istediğinize bir takma ad veririm. grep -v grepHerhangi bir grep işlemini hariç tutmak için ilave bir boru içerecek şekilde grep işlemini çıktımızdan çıkarmanın basit bir yolu .
grepSüreci ortadan kaldırmak için , deseninizin bir parçası olarak parantez kullanabilirsiniz:
ps -ef | grep '[t]ty'
Bunu psve ile yapabilirsiniz pgrep:
ps -fp $(pgrep -d, tty)
Bu size yardımcı olacaktır sanırım:
ps auxww
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }Aksi halde, aramanızla eşleşen hiçbir işlem yoksa, tümpskullanım megilla'sını doldurur.