Solusi 1:
ps -ef | egrep "GMC|PID"
Ganti "GMC" dan ps
beralih sesuai kebutuhan.
Contoh keluaran:
[email protected]:~$ ps -ef | egrep "disk|PID"
UID PID PPID C STIME TTY TIME CMD
paremh1 12501 12466 0 18:31 pts/1 00:00:00 egrep disk|PID
root 14936 1 0 Apr26 ? 00:02:11 /usr/lib/udisks/udisks-daemon
root 14937 14936 0 Apr26 ? 00:00:03 udisks-daemon: not polling any devices
Solusi 2:
Berkat geekosaur, saya ingin menggunakan perintah ini untuk permintaan Anda, bukan perintah terpisah:
ps -ef | head -1; ps -ef | grep "your-pattern-goes-here"
Yang sulit adalah memanfaatkan ";" didukung oleh shell untuk merangkai perintah.
Solusi 3:
Kolom kedua adalah id proses; 4 adalah saat proses dibuat (ini biasanya saat program Anda dimulai, tetapi tidak selalu; pertimbangkan execve()
dan kawan kawan); 6 adalah jumlah waktu CPU yang dikonsumsi. Jadi sudah berjalan selama 8 hari dan menggunakan waktu CPU hampir 7 hari, yang menurut saya mengkhawatirkan.
Mendapatkan tajuk dalam doa yang sama paling sulit; Saya hanya akan melakukan ps | head -1
terpisah . Anda mungkin mempertimbangkan untuk menggunakan ps
metode pemilihannya sendiri atau sesuatu seperti pgrep
bukannya grep
, yang sebenarnya tidak dirancang untuk melewatkan header.
Solusi 4:
Solusi egrep sederhana dan berguna, tetapi tentu saja Anda bergantung pada header yang selalu berisi 'PID' (walaupun asumsi yang lebih masuk akal) dan string yang sama tidak muncul di tempat lain. Saya kira ini cukup untuk kebutuhan Anda, tetapi jika seseorang menginginkan alternatif, ada sed.
Sed memungkinkan Anda mengatakan "cetak baris pertama, lalu baris apa pun yang berisi pola". Misalnya:
ps auxwww | sed -n '1p; /PROCESS_NAME_TO_SEARCH/p;'
Tambahkan /sed -n/d;
untuk memfilter sed sendiri:
ps auxwww | sed -n '1p; /sed -n/d; /PROCESS_NAME_TO_SEARCH/p;'
Solusi 5:
alternatif yang lebih mudah:ps -ef | { head -1; grep GMC; }
ganti nomor dengan jumlah baris yang menampilkan tajuk Anda.