Linux: Argümanlara dayalı süreci öldür


54

Komut satırı argümanlarına dayanarak bir işlemi nasıl öldürebilirim? killall, pgrepve pkillyalnızca işlem adına göre çalışır gibi görünüyor.

Java sanal makinelerinde çalışan birkaç uygulamayı birbirinden ayırt edebilmek için buna ihtiyacım var, burada javaherkes için işlem adı ve gerçek uygulama adı komut satırı argümanlarına bakarak bulunabilir.

Bu, el ile ps aux | grep myapp.jarpid'yi çıktıdan el ile öldürmekle ve ardından el ile yapılabilir , ancak komutun otomatik olarak eşdeğer bir şey yapmasını istiyorum.

Yanıtlar:


69

pgrep/ pkillBir almak -fbayrak. Sayfadan man:

-f    The pattern is normally only matched against the process name.
      When -f is set, the full command line is used.

Örneğin:

$ sleep 30& sleep 60&
[1] 8007
[2] 8008

$ pkill -f 'sleep 30'
[1]  - terminated  sleep 30

$ pgrep sleep
8008

1, ama benim bash 4.1.5 ... (Örnekteki ilk satırda olduğu gibi) bir ve işareti sonra iki nokta üst üste için çalışmaz bash: syntax error near unexpected token ';'bir çalışma yoktur ... case deyimi ve işareti tarafından takip edildiğinde ;;... belki farklı bir kabuk kullanıyorsunuz (?)
Peter.O

@ jw013 Aslında, kullandığım zshsözdizimini destekleyen kullanıyorum . Dışarıda bırakmak her ikisi de olsa işe yarıyor, ben de kaldırdım
Michael Mrozek

@MichaelMrozek ok nvm o zaman :) Acaba unix.SE'nin zshbaşka bir yerde olanlardan daha fazla kullanıcısı var mı merak ediyorum - sadece zshburada kullanıcıları buluyorum .
jw013

4

Sen kullanabilirsiniz htoponların komut satırı argümanları ile çalışan tüm işlemleri görüntülemek için ve seçilen bir süreci öldürmek.


4

argumentAşağıda, bir işlemin tam komut satırının çok üzerinde olması gereken normal bir ifade ile değiştirin :

kill `ps -eo pid,args --cols=10000 | awk '/argument/ && $1 != PROCINFO["pid"] { print $1 }'`

0

Eğer pkill'iniz veya neyin yoksa, sadece proc / [1-9] * / cmdline kullanın

grep -a myapp.jar /proc/[1-9]*/cmdline|tr '\0' ' '|grep -v grep|awk -F/ '{print $3}'
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.