2009-11-10 14 views
7

मेरे पास एक फ़ाइल "pid" में प्रक्रिया आईडी है, मैं इसे मारना चाहता हूं।लिनक्स खोल: फ़ाइल से कमांड तर्क कैसे पढ़ा जाए?

कुछ की तरह:

kill -9 <read pid from file> 

मैंने कोशिश की:

kill -9 `more pid` 

लेकिन यह काम नहीं करता। मैंने xargs भी कोशिश की लेकिन मेरे सिर को इसके चारों ओर नहीं मिल सका।

+0

करते हैं मुझे लगता है कि यह 'more' सा है कि यह बी/सी' more' उपयोगकर्ता इनपुट की उम्मीद की जा सकती है मौत हो गई है। – BCS

+0

http://www.speculation.org/garrick/kill-9.html –

उत्तर

12

मुझे संक्षेप में प्रस्तुत सभी उत्तर देता

kill -9 $(cat pid) 
kill -9 `cat pid` 
cat pid | xargs kill -9 
13

आप के लिए

kill -9 $(cat pid) 

काम करता है?

+1

+1। मैं बैकटिक्स पर $() विधि पसंद करता हूं, क्योंकि आप उन्हें घोंसला कर सकते हैं। – paxdiablo

3

मेरी प्राथमिकता

kill -9 `cat pid` 

कि बैकटिक में किसी भी आदेश के लिए काम करेगा।

2

kill -9 $(cat pid) या cat pid | xargs kill -9 दोनों काम करेंगे

2

आप धीरे-धीरे बंद शुरू कर दिया जाना चाहिए और उसके बाद प्रक्रिया को मारने के लिए अगर यह अच्छी तरह से खेलने के लिए नहीं चाहता है भारी सामान के लिए ऊपर ले जाएँ।

एक सिगिल (-9) सिग्नल पकड़ा नहीं जा सकता है और इसका मतलब यह होगा कि प्रक्रिया द्वारा आयोजित किए जा रहे किसी भी संसाधन को साफ नहीं किया जाएगा।

पहले एक हत्या SIGTERM (-15) का उपयोग करने का प्रयास करें और फिर एक हत्या -0 $ (बिल्ली पिड) करके प्रक्रिया की उपस्थिति की जांच करें। यदि यह अभी भी चारों ओर लटक रहा है, तो हर तरह से इसे -9 के साथ क्लॉबर करें।

SIGTERM को एक प्रक्रिया द्वारा पकड़ा जा सकता है और किसी भी प्रक्रिया को ठीक से लिखा गया है, जिसमें सिग्टरएम को पकड़ने के लिए सिग्नल हैंडलर होना चाहिए और फिर बाहर निकलने से पहले अपने संसाधनों को साफ करना चाहिए।

+0

ध्यान दें कि आप 'kill -15' के बजाय' kill -s TERM' पास कर सकते हैं। – jpaugh

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