साइबरविन टर्मिनल में विंडोज़ प्रक्रिया को कैसे मारें?


18

मुझे एक समस्या है कि विंडोज पर सिगविन में एक प्रक्रिया को कैसे मारना है। मैं साइगविन के लिए पूरी तरह से नया हूं। लेकिन मेरा एक काम है कि मैं बस मार नहीं सकता। मैंने निम्नलिखित कमांड जारी करने की कोशिश की है:

kill 4568
kill -9 4568
/bin/kill -f 4568

मैंने एक अलग Cygwin टर्मिनल में कमांड जारी किए हैं क्योंकि मैं इसे Cygwin टर्मिनल में Ctrl + C नहीं कर सकता जहां प्रक्रिया चलती है। मैंने सफलता के बिना पूरे इंटरनेट पर खोज की है।


आपने क्या प्रक्रिया शुरू की, और आपने इसे कैसे शुरू किया?
me_and

यह भी देखें stackoverflow.com/questions/10877652/…
me_and

जवाबों:


25
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f

या

ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f

या

powershell kill -n calc

आप उपयोग करना चाह सकते हैं ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -fक्योंकि विंडोज केस-असंवेदनशील है
tricasse

7

आप कोशिश कर सकते हैं:

taskkill /pid 4568

taskkill /im:{name-of-executable}के रूप में अच्छी तरह से उपयोगी है।
लॉरेंससी

और taskkill /im <name-of-exe> /fभी अधिक उपयोगी है।
एरिक कप्लून

1
बुरा जवाब, ओपी ने साइगविन कमांड के लिए कहा।
हाशिम

1
यह taskkill //im <name-of-exe>(2 स्लैश की आवश्यकता पर ध्यान दें)
पी। ब्रायन। मैके

5

यदि आप BASH केवल समाधान चाहते हैं, तो यह प्रयास करें: (यह मेरे लिए काम करता है)

    KILLPS="<My Process Name>"
    WINPS=`ps -W | grep -i $KILLPS`         # Make case-insensitive.
    PID=`echo $WINPS | cut -d' ' -f1` 
    /bin/kill -f "$PID"

नोट: उपयोग / बिन / मार, एम्बेडेड खोल मार PIDs सामान्य खिड़कियों के लिए सफल नहीं होगा।


आपका नोट / बिन / मार बनाम शैल की हत्या के बारे में बहुत उपयोगी था। धन्यवाद
फिल

2

( मेरे एसओ के एक सवाल के जवाब से ):

अलग-अलग विंडोज प्रोग्राम सिग्नल को संभालते हैं जो मारते हैं अलग-अलग भेजता है; उन्हें कभी भी उसी तरह से निपटने के लिए डिज़ाइन नहीं किया गया है जिस तरह से लिनक्स / सिगविन कार्यक्रम हैं।

विंडोज प्रोग्राम को मारने के लिए एकमात्र विश्वसनीय तरीका विंडोज विशिष्ट टूल का उपयोग करना है, जैसे टास्क मैनेजर या प्रोसेस एक्सप्लोरर।

उस ने कहा, यदि आप पहले से ही नहीं हैं, तो आपको अपने सिगविन टर्मिनल को प्रशासक मोड में चलाने का सौभाग्य प्राप्त हो सकता है (अपने शॉर्टकट पर राइट क्लिक करें और "रन ऐज एडमिनिस्ट्रेटर" चुनें)।


1

यहाँ सोचने के लिए दो बातें:

  1. सही PID प्राप्त करें, जो कि WINPID है।
  2. सही उपकरण का उपयोग करें।

मारने, उपयोग करने के लिए सही WINPID प्राप्त करने के लिए cat /proc/<PID>/winpid। मैं इसे चलाता हूं:

ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &

और तुरंत बाद एक और करो ps

उपयोग करने का सही उपकरण sysinternals है PsKill64.exe -t <winpid> जो स्क्रिप्ट प्रक्रिया के सभी वंशज को भी मारता है, जो killनहीं करता है।


1
आपको वोट मिला cat /proc/${ZID}/winpid, यह जानकर बहुत अच्छा लगा। और ps -aW | grep ...विन 7 x64 के तहत कम से कम मेरे सागविन पर समाधान के साथ तेजी से । लेकिन PsKill64 के लिए मुझे लगता है कि आपको -tउप प्रक्रियाओं को मारने की आवश्यकता है, और उपप्रकारों taskkillको भी मार सकता है।
244an

हां, आपको -tवंशजों को मारने की भी जरूरत है । सही जवाब दिया।
not2qubit

0

यदि आपके पास एक विंडोज़ प्रोग्राम है जो एक साइबरविन बैश प्रक्रिया के तहत एक उपप्रकार है, तो आप taskkill /F /PID [the cygwin process id] /Tप्रक्रिया पेड़ को मारने के लिए उपयोग कर सकते हैं , इसके psसाथ विंडो पीआईडी ​​प्राप्त करने की कोई आवश्यकता नहीं है awkआदि।
यह Win7 x64 के तहत परीक्षण किया गया है।

# Simple example in cygwin:
> notepad.exe &
> pid=$!
...
> taskkill /F /PID $pid /T

बेशक आप विंडो पीआईडी ​​का भी उपयोग कर सकते हैं।


0

Git Bash में मैं उपयोग करता हूं:

targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;

मैंने इसे साइगविन में आज़माया नहीं है, लेकिन मुझे लगता है कि यह वहाँ भी काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.