GNU/Linux >> Belajar Linux >  >> Linux

Cara mendapatkan pgrep untuk menampilkan info proses lengkap

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

Linux
  1. Secara terprogram dapatkan induk pid dari proses lain?

  2. Bagaimana cara mendapatkan nilai pengembalian dari PROSES ANAK?

  3. Bagaimana cara mendapatkan path lengkap dari suatu file?

  1. Bagaimana cara mendapatkan ID proses untuk mematikan proses nohup?

  2. Cara mendapatkan PID dari proses anak bercabang di skrip Shell

  3. Bagaimana cara mendapatkan PID dengan nama proses?

  1. Bagaimana cara mendapatkan ID proses dari proses latar belakang?

  2. Cara mendapatkan proses anak dari proses induk

  3. Cara mendapatkan nomor tampilan yang ditugaskan oleh X