कुछ तर्कों के साथ प्रक्रिया को खोजने और मारने के लिए बैश स्क्रिप्ट?


17

मुझे एक स्क्रिप्ट चाहिए, जो उदाहरण (ओं) को मारती है, sshजिनमें से -D तर्क (स्थानीय प्रॉक्सी सेट करना ) के साथ चलाया जाता है।

मैन्युअल रूप से, मैं करता हूं ps -A | grep -i ssh, -D और kill -9 {id}प्रत्येक के साथ उदाहरण (ओं) को देखें ।

लेकिन क्या यह बैश स्क्रिप्ट के रूप में दिखता है?

(मैं मैक ओएस एक्स पर हूं लेकिन किसी भी आवश्यक कमांड को स्थापित करूंगा port)


मैक ओएस एक्स पर pgrep और pkill विकल्प देखें ? pgrepऔर pkillसोलारिस और लिनक्स के नाम से प्रक्रियाओं को मज़बूती से खोजने या मारने की आज्ञा है।
गिल्स एसओ- बुराई को रोकें

जवाबों:


26

चलाएं pgrep -f "ssh.*-D"और देखें कि क्या सही प्रक्रिया आईडी लौटाती है। यदि ऐसा होता है, तो बस उसी विकल्प और पैटर्न pgrepको बदलें pkillऔर रखें

इसके अलावा, आपको kill -9उर्फ सिगिली का उपयोग नहीं करना चाहिए जब तक कि पूरी तरह से आवश्यक न हो क्योंकि प्रोग्राम्स बाहर निकलने से पहले अपने आप को साफ करने के लिए SIGKILL को नहीं फँसा सकते हैं। मैं केवल kill -9पहली कोशिश के बाद उपयोग करता हूं -1 -2और -3


आपको एक forलूप के रूप में मारना चाहिए जो kill -iप्रत्येक के लिए करता है i;)
सीमस

1
pgrepOSX पर मूल निवासी नहीं है, आपको इसे किसी तीसरे पक्ष से प्राप्त करना होगा। विषय पर पिछले धागे में प्रस्ताव और विकल्प हैं।
गाइल्स का SO- बुराई पर रोक '21

आदमी जिंदा है, जितना अधिक मैं 'निक्स' का उपयोग करता हूं, उतना ही मुझे यह पसंद है :) इसके लिए धन्यवाद!
javamonkey79

pgrep और pkill OS X 10.8 (माउंटेन लायन) और इसके बाद के संस्करण में उपलब्ध हैं। Apple.blogoverflow.com/2012/07/…
पीटर

यह उस -aध्वज को जोड़ने के लिए उपयोगी हो सकता है pgrepजिससे यह न केवल प्रक्रिया आईडी, बल्कि कमांड (तर्कों सहित) को भी प्रिंट करता है। इस तरह यह सत्यापित करना बहुत आसान है कि केवल वांछित प्रक्रियाएं मेल खाती हैं।
लूटर


0

जानकारी एकत्र करने के लिए आप खरीद फाइल सिस्टम का लाभ उठा सकते हैं। उदाहरण के लिए:

for proc in $(grep -irl "ssh.*-D" /proc/*/cmdline | grep -v "self"); do if [ -f $proc ]; then cat $proc && echo ""; fi; done

यह सही नहीं है, आप एक अधिक अनन्य रेगेक्स चाहते हैं (विशेषकर यदि आप प्रक्रियाओं को मार रहे हैं) लेकिन echo $proc | awk -F'/' '{ print $3 }'आपको प्रक्रिया का पीआईडी ​​दिखाएगा (तों)।


1
OSX नहीं है /proc। और वहाँ पहले से ही ऐसा करने के लिए एक मजबूत उपकरण है, कहा जाता है pgrep(मूल रूप से कम से कम सोलारिस और लिनक्स पर उपलब्ध है)।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.