2012-07-26 19 views
13

यह है कि मैं क्या bash लिपि में अभी है:बैश स्क्रिप्ट, मार डालो प्रक्रिया पीआईडी ​​फ़ाइल से खींच कर

ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9 

इस के साथ समस्या यह है कि अगर किसी में लॉग इन किया है और संबंधित कुछ खींच ग्लासफिश है , यह उस पीआईडी ​​को भी खींच देगा। इस प्रकार गलत पीआईडी ​​की हत्या हुई।

तो मेरा सवाल यह है कि मैं केवल सही पीआईडी ​​खींचने के लिए क्या कर सकता हूं, और पीआईडी ​​को पीआईडी ​​फाइल से पीआईडी ​​खींचने के लिए इसे कैसे लिखूं, जिसे ग्लासफिश उत्पन्न करता है।

+11

हत्या -9 थोड़ा कठोर है, क्या आपको यकीन है कि आपको इस तरह की हिंसा की आवश्यकता है? :-) –

उत्तर

17

संपादित स्क्रिप्ट glassfish शुरू होता है और echo $$ > /path/to/PID-file की तरह कुछ जगह तुरंत लाइन प्रक्रिया शुरू करने से निम्नलिखित लाइन पर (इस घर निर्देशिका या $USER जैसे कुछ अन्य तंत्र के लिए ~ शामिल कर सकते हैं उपयोगकर्ता विशिष्ट बनाने के लिए)। फिर आप kill $(cat /path/to/PID-file) का उपयोग कर सही प्रक्रिया को मार सकते हैं।

+0

जिस तरह से ps a ("केवल स्वयं को हटा रहा है"), कोड में नहीं है। मैंने गलती से पुराने कोड से चिपकाया। –

+4

बैश के लिए यूयूओसी। '$ ( jordanm

+4

@jordanm यहां बिल्ली का उपयोग करने का प्रदर्शन प्रभाव शायद ही मापने योग्य होगा, उपयोगकर्ता को अकेले ध्यान देने योग्य है। मैं बेहतर पठनीयता * किसी * दिन ले जाऊंगा। यदि यह आपको बेहतर महसूस करता है तो आप इसे 'कम' के साथ प्रतिस्थापित कर सकते हैं, लेकिन '$ ( Thor84no

0
ps aux | grep ^$USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9 

नीचे मैं ps स्विच के साथ गलती से किया था, इसलिए ऊपर ग्रेप ठीक होना चाहिए।


आह यह काम नहीं कर रहा है, ps इस ps -ao pid,tty,comm -u $USER की तरह उपयोग किया जा सकता है, इस ग्रेप ऊपर ठीक होना चाहिए ...

someone else is logged in ...

यदि हां, तो

-u स्विच जोड़ने
ps aux -u $USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9 

$ उपयोगकर्ता उपयोगकर्ता नाम है जिसे चुना और सूचीबद्ध किया जाएगा, डिफ़ॉल्ट रूप से होना चाहिए ओएस पर्यावरण में पहले से ही सेट है। एक से अधिक उपयोगकर्ता अल्पविराम ps aux -u root,$USER द्वारा चयनित किया जा सकता है

नोट लें: अगर वहाँ प्रणाली में कोई विशिष्ट उपयोगकर्ता नाम है, ps त्रुटि फेंक देगा: उपयोगकर्ता नाम मौजूद नहीं है।

man ps और पढ़ें।

-u userlist Select by effective user ID (EUID) or name. This selects the processes whose effective user name or ID is in userlist. The effective user ID describes the user whose file access permissions are used by the process (see geteuid(2)). Identical to U and --user.

संबंधित मुद्दे