Ş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ç ( myServerburada) ç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ç ( myServerburada) ç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 myServerya da killall -q myServer? Varolmayan süreçleri öldürmeye çalışmanın bir dezavantajı yoktur.
|| trueSonra 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 1döndürülen Hata Kodunu önler killall. echoKısım halinde, eyleme gelecek killallgetiri 1kendisi dönecektir ederken, 0(başarılı).
killall -qdaha iyidir
killall -qtü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.
killsadece 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ızpkillveyakillalltam olarak aynı şeyi yapmalısınız, ancak yazması daha az olan (ve muhtemelen başka avantajlar da).