Ps -ef | grep anahtar kelimesinden pid almak


111

ps -ef | grep "keyword"Bir daemon sürecinin pid'ini belirlemek için kullanmak istiyorum (içinde ps -ef'in çıktısında benzersiz bir dizge var).

İşlemi öldürebilirim, pkill keywordonu öldürmek yerine pid'i döndüren herhangi bir komut var mı? (pidof veya pgrep çalışmıyor)

Yanıtlar:


231

Sen edebilirsiniz kullanmak pgrepeklemek sürece -fseçenekleri. Bu pgrep, yalnızca işlem adı yerine tüm komutta (bağımsız değişkenler dahil) anahtar kelimeleri eşleştirir.

pgrep -f keyword

Gönderen adam sayfası :

-f       Kalıp normalde yalnızca işlem adıyla eşleştirilir. Ayarlandığında -f, tam komut satırı kullanılır.


Eğer gerçekten pgrep'ten kaçınmak istiyorsanız, şunu deneyin:

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

Not []anahtar kelimenin ilk harfi etrafında. Bu, awkkomutun kendisiyle eşleşmekten kaçınmak için yararlı bir numara .


3
ps fazla kullanılır ve pgrep çok az kullanılır. Gönderi için teşekkürler.
Felipe Alvarez

6
Çıkışı öldürmek için geçmenin bir yolu: kill -9 `pgrep -f keyword`
Kris

Bu cevap şimdiye kadarki en iyi cevap. İle çok zaman harcadımps aux | grep chrome
Brandon

Kullanmak zorunda [k]üzerinde hile pgrep -f. Komut dosyam bir alt kabukta çalışıyordu, bu yüzden üst komutunu aldığını düşünüyorum (kesin olarak bilinmesi zor - döndürdüğü pid, komutun yürütülmesi tamamlandığında gitmişti!)
ArtOfWarfare

2
@Kris bu kullanım senaryosu için sadece kullanmak daha kolay olmaz pkill -9 -f keywordmı?
oidualc

53

Deneyin

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

Bu komut size içinde KEYWORD bulunan işlemlerin PID'sini vermelidir. Bu örnekte, awk2. sütunda olanı çıktıdan döndürüyor.


2
Bu birden fazla pid döndürebildiğinden, ilkini ekleyerek elde edebilirsiniz | head -1.
Kris

'head -1' bazı linux'larda grep PID'yi döndürecektir, should be tail -1.
Joao Vitorino

22

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


4
Belki bir yazım hatası? ps -ef | grep ANAHTAR KELİME | grep -v grep | awk '{print $ 2}'
rmv

Döndürülen PID'yi "kill -9" a nasıl geçireceğinizi biliyor musunuz?
alybadawy

3
@alybadawy | xargs kill -9sonuna kadar ekle
patte

8

kullanırım

ps -C "keyword" -o pid=

Bu komut size bir PID numarası vermelidir.



3

Bir işlemi belirli bir anahtar kelimeyle sonlandırmak için ~/.bashrc(linux) veya ~/.bash_profile(mac) ' da bir takma ad oluşturabilirsiniz .

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

Mükemmel! Sonuna bir boru eklemek, | head -1her şeyi güzel ve düzgün bir şekilde tamamlar.
Russ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.