karmaşık işlem adları için pgrep / pidof kullanımı?


11

Sistemimdeki bir işleme HUP göndermek için pidof veya pgrep kullanmaya çalışıyorum. Sorun sadece kesin bir parametre ile süreci öldürmek istiyorum olmasıdır.

Bu 'ps awx'in çıktısıdır

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test

Bunlardan birini yaparak:

pidof processname 
pgrep processname

İşlem adı ile başlayan tüm işlemlerin listesini alırsınız, ancak şöyle bir şey yapmak istiyorum:

pidof processname test
pgrep processname test

Yalnızca ihtiyacım olan PID'yi almak için (bu örnekte 659 olurdu)

GÜNCELLEME

Pgrep üzerinde -f bayrağını kullanarak sadece istediğimi yapar, yaparak:

pgrep -f "processname test"

Doğru cevabı alacaksın.


Doğru, genellikle ihtiyacınız var -fçünkü tam komut satırında eşleşmek istiyorsunuz. Pgrep'in düzenli ifadeler üzerinde çalıştığını ve böylece nispeten karmaşık eşleme yapabileceğinizi unutmayın.
cjc

Yanıtlar:


10
$ ps aux |grep [d]evio
user01   10220  0.0  0.1   5376  2424 pts/5    S+   11:41   0:00 ssh devio
$ pgrep -f "ssh devio"
10220
$ pkill -0 -f "ssh devio" ; echo $?
0
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.