Şu anda benim sh komut dosyasında böyle bir çizgi kullanın:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Ama bunu sadece süreç ( myServer
burada) çalışıyorsa nasıl arayacağımı merak ediyorum ?
Şu anda benim sh komut dosyasında böyle bir çizgi kullanın:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Ama bunu sadece süreç ( myServer
burada) çalışıyorsa nasıl arayacağımı merak ediyorum ?
Yanıtlar:
Genellikle sadece pgrep ve pkill kullanıyorum
if pgrep myServer; then pkill myServer; fi
pkill myServer
ya da killall -q myServer
? Varolmayan süreçleri öldürmeye çalışmanın bir dezavantajı yoktur.
|| true
Sonra ekleyin .
if ! killall -q myServer; then echo ERROR; fi
?
Biraz farklı bir yaklaşım şöyle olabilir:
killall PROCESS || echo "Process was not running."
Bu işlem yoksa, komuttan 1
döndürülen Hata Kodunu önler killall
. echo
Kısım halinde, eyleme gelecek killall
getiri 1
kendisi dönecektir ederken, 0
(başarılı).
killall -q
daha iyidir
killall -q
tüm unix lezzetlerinde desteklenmez, macOS Catalina hala sahip değil.
kullanmayı deneyin:
sudo kill `pidof process_name`
Burada process_name, öldürmek istediğiniz sürecin adıdır. Bu konuda harika olan, pidof'un verilen adla eşleşen tüm işlemlerin pid'lerini listeleyecek olmasıdır. Kill çoklu pidleri kabul ettiğinden, hepsini tek bir hevesle öldürecektir.
Bunun yardımcı olup olmadığını bana bildirin.
kill `pidof process_name
. Boş bir liste döndürürse, kill çağrısını atlayın.
Ar-Ge ile oluşturduğum Küçük Senaryo. umarım beğenirsin
#!/bin/bash
echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name got killed"
else
echo " $proc_name is not running/stopped "
fi
script.sh gibi bir adla kaydedin
chmod +x script.sh
./script.sh
Ardından işleminizin adını verin.
Not: Bu ve para cezası ile birçok kez denedim.
Sürecin mevcut olup olmadığını kontrol edin pidof
. Varsa öldürün:
(! pidof process_name) || sudo kill -9 $(pidof process_name)
Yukarıdaki komut yürütüldükten sonra çıkış kodu her zaman 0'dır.
kill
sadece süreç çalışırken aramak imkansızdır , çünkü test ile çağrılma arasında bir yarış durumu vardırkill
(bu kısa sürede başka bir nedenden dolayı işlemin durması mümkündür). Kullanmaya çalıştığınızpkill
veyakillall
tam olarak aynı şeyi yapmalısınız, ancak yazması daha az olan (ve muhtemelen başka avantajlar da).