Bagaimana cara mencari proses dengan nama tanpa menggunakan grep?


62

Dalam rangka untuk mencari proses yang dapat Anda gunakan psdengan grep.

Misalnya mencari firefox

ps aux | grep firefox

Bagaimana cara mendapatkan jawaban yang sama tanpa menggunakan grep?


1
Saya ingin tahu mengapa Anda ingin melakukan ini, mengingat ps/grepsolusi itu bekerja dengan sangat baik?
neuronet

OP hanya menginginkan perintah yang lebih pendek. Jika ada hal seperti ps -n <process name>itu akan menjawab kebutuhannya. ps -n firefoxsedikit lebih pendek dari ps | grep firefox. pssudah bisa memfilter pidatau memproses id pengguna, jadi pertanyaan yang wajar untuk memfilter nama proses.
Jochem Schulenklopper

Jawaban:


71

The pgrepperintah, dan saudaranya pkill, ada justru untuk tujuan ini:

  • pgrep firefox akan mendaftar semua proses yang perintahnya cocok firefox
  • pgrep -f firefox akan mendaftar semua proses yang seluruh baris perintahnya cocok firefox
  • pgrep -x firefox akan mendaftar semua proses yang perintahnya sama persis firefox
  • ... dan seterusnya.

Dan tentu saja, pgrepakan mengecualikan dirinya dari pertandingan, sehingga tidak ada grepritual yang terkait dengan ps | grepyang diperlukan.


Set alat lainnya untuk ini adalah pidofdan killallperintah. Ini tidak sefleksibel pgrepdan pkill.

  • pidof firefox akan mendaftar proses yang perintahnya adalah firefox

24
ps -fC process-name

contoh:

ps -fC firefox

dari man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

Ini adalah jawaban terbaik tetapi sayangnya tidak berfungsi pada OSX. ps -CBendera BSD berperilaku sangat berbeda - "Ubah cara persentase CPU dihitung"
mastaBlasta

2

topmemungkinkan Anda untuk mencari string ketika Anda menekan huruf besar L; proses akan disorot, dan gunakan tombol panah atas dan bawah untuk menelusuri daftar proses. Demikian pula, htopperintah memungkinkan menyoroti proses tertentu ketika Anda menekan /. Dan \akan menyaring semua proses dengan string tertentu di namanya.

Bagi yang suka awk, inilah oneliner awk: ps -eF | awk '/process-name/ {print $11}' . Dengan ps -eFnama proses selalu di kolom 11. Atau jika Anda melakukannya, ps -eF | awk '{print $11}' | sortAnda mendapatkan daftar nama proses yang diurutkan, diurutkan secara alfabet. Pipa itu menjadi lessperintah hanya untuk melihat daftar panjang file lebih mudah.


2

Trik keren

$ps -ejH

Anda akan mendapatkan semua proses dengan nama

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Redirect atau salin output ke file dan kemudian buka nano, tekan Ctrl+ W dan Anda dapat mencari nama yang Anda inginkan.


1

Anda juga dapat menggunakan htopdan kemudian tekan F4 untuk memfilter hasil dengan string yang ditentukan pengguna yang cocok. Anda juga memiliki fitur pencarian khusus yang tersedia dengan menekan F3.


1

Jika dua proses adalah masalahnya, Anda hanya dapat menggunakan grep:

grep firefox /proc/*/cmdline

0

Saya baru saja membaca ps ini alias di Lennart Poettering Blog. Outputnya sesuai dengan parenting grup kontrol systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.