Ps -ef grep से प्रक्रिया आईडी प्राप्त करें (या इसे हटाने से पहले किसी एप्लिकेशन को रोकें)


0

मेरे पास एक आरपीएम है और मैं यह जांचना चाहता हूं कि मेरा एप्लिकेशन चल रहा है या नहीं और अगर यह अनइंस्टॉल चलने से पहले बंद हो जाता है, तो इसकी जांच करें।
मेरी सेवा एक विशिष्ट उपयोगकर्ता के तहत चलती है। मैं आरपीएम कल्पना में बैश का उपयोग कैसे कर सकता हूं?
अर्थात। मुझे कैसे पता चलेगा कि मेरी सेवा चल रही है ताकि मैं इसे रोक सकूं?

अद्यतन करें: यदि मैं करता हूँ ps -ef|grep myUser मैं परिणाम से प्रक्रिया आईडी कैसे प्राप्त कर सकता हूं ताकि मैं कर सकूं kill -9?


नहीं kill -9। केवल killkill -9 अच्छा नहीं है, और ज्यादातर मामलों में सहायक भी नहीं है (फाइल डिस्क्रिप्टर को लटका कर छोड़ सकते हैं, लाश बना सकते हैं, आदि)। कम से कम सुनिश्चित करें कि आप जानते हैं ठीक ठीक क्या kill -9 इसका उपयोग नियमित रूप से करने से पहले।
Daniel Andersson

जवाबों:


2

तुम कर सकते हो

ps -U someUserName -o pid,comm | awk '/someProcessName/{print $1}'

(मेरे उत्तर को संपादित किया और मेरे उत्तर से उक्त पंक्ति ली आपका संबंधित प्रश्न ) या समान [1], या इससे भी बेहतर

pgrep -u myuser mybinaryname

प्रक्रिया आईडी प्राप्त करने के लिए, या यहाँ तक की सरल

pkill -u myuser mybinaryname

सीधे प्रक्रिया को मारने के लिए।

बाइनरी नाम निर्धारित करने के लिए कुछ परीक्षण करें और सुनिश्चित करें कि यह अन्य प्रक्रियाओं के साथ नहीं टकराए।

( pgrep तथा pkill आपके सिस्टम पर पहले से ही स्थापित होने की सबसे अधिक संभावना है। अन्यथा वे पैकेज में (डेबियन आधारित प्रणालियों पर) हैं procps )।


ध्यान दें कि एक सामान्य उपयोगकर्ता के पास संभवतः अन्य उपयोगकर्ताओं की प्रक्रियाओं को मारने के लिए विशेषाधिकार नहीं हैं, इसलिए उदा। pkill mybinaryname उन्नत विशेषाधिकारों के साथ चलाने की आवश्यकता है। यह रूट द्वारा चलाए गए स्क्रिप्ट की तरह लगता है (चूंकि यह प्रोग्रामों की स्थापना रद्द कर रहा है), इसलिए यह एक मुद्दा नहीं हो सकता है।


[1]: awk अग्रणी रिक्त स्थान ढहने से पहला गैर-रिक्त क्षेत्र चुनता है, जो अगर pid & lt; 10000 पर दिखाई देगा (क्योंकि मेरे सिस्टम पर, pidmax 32767 है), जो कि भ्रमित करेगा। cut


लेकिन बाइनरी नाम और उपयोगकर्ता नाम क्यों नहीं?
Jim

क्या आपके पास प्रक्रिया चलाने वाले कई उपयोगकर्ता हैं, और केवल एक निश्चित उपयोगकर्ता के विशिष्ट उदाहरण को मारना चाहते हैं? ऐसा लगता है कि आप सिर्फ इस प्रक्रिया को मारना चाहते हैं, चाहे वह कोई भी हो। मैं अपने जवाब में जोड़ दूंगा कि आपके पास इस तरह के अन्य उपयोगकर्ताओं की प्रक्रियाओं को मारने के लिए (शायद नहीं) विशेषाधिकार हैं, इसलिए आपको इसके माध्यम से चलाने की आवश्यकता हो सकती है sudo या इसी के समान।
Daniel Andersson

प्रक्रिया केवल 1 विशिष्ट उपयोगकर्ता के तहत चलती है और 1 प्रक्रिया चल रही है। रूट यह करेगा
Jim

तब आपको इसे एक ही उपयोगकर्ता को स्पष्ट रूप से प्रतिबंधित करने की आवश्यकता नहीं है, लेकिन आप कर सकते हैं इसके साथ करो pgrep -u myUser myBinaryName। मैं इसे उत्तर में जोड़ सकता हूं।
Daniel Andersson

0
ps wp PID|grep PID

आप इसे grep के बिना करते हैं - आप शीर्ष लेख को हटाने के साथ grep पाएंगे।

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