वर्तमान में मैं अपनी sh स्क्रिप्ट फ़ाइल में इस तरह लाइन का उपयोग करता हूं:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
लेकिन मुझे आश्चर्य है कि इसे कैसे कॉल करें यदि प्रक्रिया ( myServerयहां) चल रही है?
वर्तमान में मैं अपनी sh स्क्रिप्ट फ़ाइल में इस तरह लाइन का उपयोग करता हूं:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
लेकिन मुझे आश्चर्य है कि इसे कैसे कॉल करें यदि प्रक्रिया ( myServerयहां) चल रही है?
जवाबों:
मैं आमतौर पर बस pgrep और pkill का उपयोग करता हूं
if pgrep myServer; then pkill myServer; fi
pkill myServerया नहीं killall -q myServer? लगातार प्रक्रियाओं को मारने का प्रयास करने के लिए कोई नकारात्मक पहलू नहीं है।
|| trueतब अपेंड करें ।
if ! killall -q myServer; then echo ERROR; fi?
थोड़ा अलग दृष्टिकोण कुछ इस तरह होगा:
killall PROCESS || echo "Process was not running."
यह 1त्रुटि-कोड killallकमांड से लौटाया जाएगा , अगर प्रक्रिया मौजूद नहीं थी। echoहिस्सा केवल कार्रवाई में आ जाएगा अगर, killallरिटर्न 1, जबकि खुद को वापस आ जाएगी 0(सफलता)।
killall -qबेहतर है
killall -qसभी यूनिक्स स्वादों पर समर्थित नहीं है, macOS कैटालिना अभी भी नहीं है।
प्रयोग करके देखें:
sudo kill `pidof process_name`
जहाँ process_name उस प्रक्रिया का नाम है जिसे आप मारना चाहते हैं। इसके बारे में बहुत अच्छी बात यह है कि पिडोफ, दिए गए नाम से मेल खाते सभी प्रक्रियाओं की सूची देगा। चूंकि मारना कई पिड को स्वीकार करता है, यह उन सभी को एक ही चक्कर में मार देगा।
मुझे बताएं क्या इससे मदद मिलती है।
kill `pidof process_name। यदि यह एक खाली सूची लौटाता है, तो किल कॉल को छोड़ दें।
लघु स्क्रिप्ट मैंने आर एंड डी के साथ बनाई है। आशा है तुम्हें यह पसंद आएगा
#!/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 जैसे किसी नाम से सहेजें
chmod +x script.sh
./script.sh
फिर अपनी प्रक्रिया का नाम दें।
नोट: मैंने इसके और इसके जुर्माने को लेकर कई बार कोशिश की है।
killकेवल तभी कॉल करना असंभव है जब प्रक्रिया चल रही हो, क्योंकि परीक्षण और आह्वान के बीच दौड़ की स्थिति हैkill(यह संभव है कि उस कम समय में किसी अन्य कारण से प्रक्रिया बंद हो गई है)। आपको उपयोग करना चाहिएpkillयाkillallजो बिल्कुल वही करते हैं जो आप करने की कोशिश करते हैं, लेकिन कम से कम टाइप करने के लिए (और शायद कुछ अन्य फायदे भी)।