GNU/Linux >> Belajar Linux >  >> Linux

Bisakah ps hanya menampilkan proses non kernel di Linux?

Ini harus dilakukan (di Linux):

ps --ppid 2 -p 2 --deselect

kthreadd (PID 2) memiliki PPID 0 (di Linux 2.6+ ) tetapi ps tidak memungkinkan untuk memfilter PPID 0; jadi solusi ini.


Salah satu cara untuk mengenali proses kernel adalah mereka tidak menggunakan memori pengguna apa pun, jadi bidang vsz adalah 0. Ini juga menangkap zombi (terima kasih kepada Stephane Chazelas atas pengamatan ini), yang dapat dihilangkan berdasarkan statusnya.

ps axl | awk '$7 != 0 && $10 !~ "Z"'

Untuk mencantumkan PID saja:

ps -e -o pid= -o state= -o vsize= | awk '$2 != "Z" && $3 != 0 {print $1}'

Dalam praktiknya saya menemukan idiom berikut cukup:

ps auxf | grep -v ]$

Ini memfilter baris yang diakhiri dengan tanda kurung, yang mungkin hasil menghilangkan entri yang tidak diinginkan tapi itu sangat tidak mungkin. Sebagai gantinya, ini cukup mudah diingat dan relatif cepat untuk diketik.

Beberapa proses seperti avahi-daemon menambahkan informasi nama prosesnya dalam tanda kurung (nama host dalam kasus avahi-daemon) dan akan disaring oleh perintah ini.


Linux
  1. Linux – Apakah Kernel Linux/unix yang Berbeda Dapat Dipertukarkan?

  2. Bisakah Anda Menjalankan Xcode di Linux?

  3. Apakah utas kernel Linux benar-benar proses kernel?

  1. Modul kernel Linux kita tidak bisa hidup tanpanya

  2. Bagaimana saya bisa memesan satu blok memori dari kernel Linux?

  3. Jadikan file hanya dapat dibaca di Linux bahkan untuk root

  1. Linux – Proses Init:Leluhur Semua Proses?

  2. Perintah Linux ps

  3. Perintah ls Linux