Apakah ada opsi yang relatif lurus ke atas dengan top untuk melacak proses tertentu?
Idealnya dengan mengidentifikasi proses dengan nilai yang dapat dibaca manusia? misalnya chrome
atau java
.
Dengan kata lain, saya ingin melihat semua informasi yang diberikan oleh top, tetapi untuk hasil yang akan difilter ke parameter yang disediakan yaitu. 'chrome' atau 'java'
top | grep chrome
?ps -x | chrome
untuk mendapatkan pid (biarkan pid ditampilkan2034
) dan kemudiantop | grep 2034
top | grep chrome
bekerja dengan sempurna - terima kasih!ps -x | process_name
untuk mendapatkan PID, ketika saya menjalankan proses lagi PID berbeda dan oleh karena itu PID asli tidak akan mengidentifikasinya.Jawaban:
Anda cukup menggunakan
grep
:Jalankan perintah berikut untuk mendapatkan output yang Anda inginkan (ex-chrome):
Di sini kita gunakan
grep
dengan pipa|
jaditop
&grep
jalankan paralel;top
output diberikan kegrep
(sebagai input) dangrep chrome
menyaring garis yang cocokchrome
sampaitop
berhenti.sumber
top
dan OP ingin memfilter proses berdasarkantop
.sleep 10 & top | grep sleep
Dari jawaban saya yang lain di sini , Anda dapat melakukan sesuatu seperti,
sumber
top -p `pgrep "java"`
memberi saya kesalahan berikut dalam bash shelltop: -p requires argument
. top-ppgrep -d ',' "apache2"
berhasil untuk saya, tapi saya tidak benar-benar mengerti apa yang dilakukan perintah - apakah itu cara memberi makan dalam beberapa argumen ke atas?pid
koma daftar yang dipisahkan agar berfungsi.Penjelasan:
top -p pid1,pid2
: tampilkan beberapa informasi proses, pid harus dipisahkan oleh,
pgrep -d "," java
: cetak id dari semua program java, id dipisahkan oleh baris baru secara default. gunakan-d ","
untuk memisahkannya,
seperti yang diminta oleh bagian atas.Jika Anda melihat kesalahan seperti
top: -p argument missing
, itu berarti tidak ada program java yang sedang berjalan, yaitu pgrep tidak memiliki output.sumber
top -p
pgrep "java" `` saja. Terima kasih.pgrep
kode keluar:pids="$(pgrep -d, java)" && top -p "$pids"
Di OpenBSD
top
, cukup tekan gdan masukkan nama perintah yang ingin Anda filter.Di
top
misalnya pada Ubuntu, tekan odan masukkan misalnyaCOMMAND=chrome
untuk hanya menampilkan entri dariCOMMAND
kolom yang sama denganchrome
.Di Linux yang menggunakan
top
implementasi yang sama seperti Ubuntu, baca bagian FILTERING di Jendela ditop
manual.sumber
Jawaban bagus lainnya telah disediakan, tetapi saya membuat skrip beberapa waktu lalu, yang saya beri nama ptop, yang membantu saya dengan baik:
Ini mendukung beberapa nama proses untuk ditentukan (seperti
ptop bash chrome
) dan memberikan pesan kesalahan yang lebih bagus jika ada / tidak ada proses dengan salah satu nama yang ditentukan berjalan.sumber
Jika Anda ingin tetap tinggal
top
dan menjaga semua proses lainnya agar sesuai konteks, Anda dapat menekanL
untuk mencari proses Anda:Ini akan menyoroti proses apa pun dengan
chrome
namanya, dan membawanya ke tampilan. Gunakan&
untuk pergi ke pertandingan berikutnya.Anda dapat menekan
c
untuk beralih antara menampilkan nama proses dan perintah lengkap.sumber
man top | less +/5d
Anda juga dapat menggunakan filter di atas untuk mengisolasi proses tertentu. Tekan 'O' untuk membuka prompt filter. Kemudian ketikkan filter yang diformat sebagai FIELD = value. Misalnya, untuk memfilter semua proses tmux, gunakan:
Gunakan '=' untuk mengatur ulang filter. Lihat bagian berjudul 'FILTERING' di halaman manual teratas.
sumber