Solusi 1:
pgrep
opsi keluaran sangat terbatas. Anda hampir pasti harus mengirimkannya kembali melalui ps
untuk mengeluarkan informasi penting. Anda dapat mengotomatiskan ini dengan menggunakan fungsi bash di ~/.bashrc
Anda .
function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }
Kemudian panggil perintah dengan.
ppgrep <pattern>
Solusi 2:
Gabungkan pgrep
dengan ps
menggunakan xargs
!
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
Misalnya coba
pgrep -u user | xargs ps -f -p
untuk mendapatkan daftar lengkap proses user
. Opsi -u user
membatasi pgrep
kepada pengguna diberikan (sebagai nomor atau nama) sedangkan ps
opsi -f -p
meminta daftar format lengkap untuk PID yang dipilih.
Sangat menyenangkan Anda menyimpan baris pertama dengan nama kolom. grep
selalu hilangkan nama kolom.
Solusi 3:
Berikut ini hanya memberi Anda PID + baris perintah lengkap. Untuk "semua info ps
tidak", lihat jawaban lain...
Kebanyakan linux menggunakan procps-ng. Sejak 3.3.4 (dirilis tahun 2012), pgrep -a
(--list-full
) menampilkan baris perintah lengkap.
Catatan:Secara default pgrep hanya cocok dengan pola yang Anda berikan dengan nama yang dapat dieksekusi. Jika Anda ingin mencocokkan dengan baris perintah penuh (seperti halnya grepping ps), tambahkan -f
(--full
) opsi.
Di versi lama (termasuk proyek procps asli), -l
opsi menunjukkan info tetapi perilakunya bervariasi:
pgrep -fl
mencocokkan pola dengan baris perintah lengkap dan menampilkan baris perintah lengkap.pgrep -l
sendirian hanya cocok dengan nama yang dapat dieksekusi dan hanya menunjukkan nama yang dapat dieksekusi.
Jika Anda tidak ingin kecocokan penuh, Anda tidak dapat melihat baris perintah lengkap :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]
Tidak yakin kode apa yang *BSD gunakan tetapi halaman manual mereka mendokumentasikan -fl
lama perilaku.
Sayangnya Anda bahkan tidak dapat menggunakan -fl
portabel - dalam procps-ng terbaru, -f
(--list-name
) selalu mencetak hanya nama yang dapat dieksekusi.
Solusi 4:
Linux
Untuk versi GNU dari pgrep
output panjang + fuzzy dicapai dengan -af
dan string harus peka huruf besar/kecil (mis. tidak ada opsi untuk peka huruf besar/kecil ).
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
Halaman manual:
-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.
MacOS
Di OSX (dan dengan kesimpulan, di BSD) -l
(keluaran panjang ) dikombinasikan dengan -f
(cocok dengan daftar argumen lengkap ) akan menampilkan perintah lengkap (-i
menambahkan ketidakpekaan huruf besar/kecil):
$ pgrep -fil ssh
OUTPUT:
33770 ssh: [email protected] [mux] t
Halaman manual:
-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.
Solusi 5:
Gunakan opsi -v untuk grep - ini mengembalikan semuanya TETAPI pola yang diminta.
ps -ef | grep <process> | grep -v grep