Mendapatkan pids dari ps -ef | kata kunci grep


111

Saya ingin menggunakan ps -ef | grep "keyword"untuk menentukan pid dari proses daemon (ada string unik dalam output ps -ef di dalamnya).

Saya dapat menghentikan proses dengan pkill keywordapakah ada perintah yang mengembalikan pid daripada membunuhnya? (pidof atau pgrep tidak berfungsi)

Jawaban:


231

Anda dapat menggunakan pgrepselama Anda menyertakan -fopsi. Itu membuat pgrepkata kunci yang cocok di seluruh perintah (termasuk argumen), bukan hanya nama proses.

pgrep -f keyword

Dari halaman manual :

-f       Pola biasanya hanya cocok dengan nama proses. Jika -fdisetel, baris perintah lengkap digunakan.


Jika Anda benar-benar ingin menghindari pgrep, coba:

ps -ef | awk '/[k]eyword/{print $2}'

Perhatikan []sekitar huruf pertama kata kunci. Itu adalah trik yang berguna untuk menghindari pencocokan awkperintah itu sendiri.


3
ps terlalu sering digunakan, dan pgrep kurang digunakan. Terima kasih atas kirimannya.
Felipe Alvarez

6
Salah satu cara untuk melewatkan keluaran untuk membunuh adalah: kill -9 `pgrep -f keyword`
Kris

Jawaban ini adalah yang terbaik. Begitu banyak waktu yang telah saya buangps aux | grep chrome
Brandon

Harus menggunakan [k]triknya pgrep -f. Skrip saya berjalan di subkulit jadi saya pikir itu mengambil perintah induknya (sulit untuk mengetahui secara pasti - pid yang dikembalikannya hilang ketika perintah selesai dijalankan!)
ArtOfWarfare

2
@Kris untuk kasus penggunaan ini tidak akan lebih mudah digunakan pkill -9 -f keyword?
oidualc

53

Mencoba

ps -ef | grep "KEYWORD" | awk '{print $2}'

Perintah itu akan memberi Anda PID dari proses dengan KEYWORD di dalamnya. Dalam contoh ini, awkmengembalikan apa yang ada di kolom ke-2 dari output.


2
Karena ini bisa mengembalikan lebih dari satu pid, Anda bisa mendapatkan pid pertama dengan menambahkan | head -1.
Kris

'head -1' akan mengembalikan grep PID di beberapa linux, Seharusnya tail -1.
Joao Vitorino

22

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'


4
Mungkin salah ketik? ps -ef | grep KEYWORD | grep -v grep | awk '{print $ 2}'
rmv

Apakah Anda tahu cara meneruskan PID yang dikembalikan ke "kill -9"?!
alybadawy

3
@alybadawy tambahkan saja | xargs kill -9akhir
patte

8

saya menggunakan

ps -C "keyword" -o pid=

Perintah ini akan memberi Anda nomor PID.



3

Untuk menghentikan proses dengan kata kunci tertentu, Anda dapat membuat alias di ~/.bashrc(linux) atau ~/.bash_profile(mac).

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"

Sempurna! Menambahkan pipa ke ujung | head -1bungkus ini semuanya bagus dan rapi.
Russ
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.