2010-06-05 12 views
6

कौन सी समस्या उत्पादन अनुप्रयोग में kill -9 का कारण बन सकती है (लिनक्स में सटीक होना)?kill -9 और उत्पादन अनुप्रयोग

मेरे पास ऐसा एप्लिकेशन है जो कुछ आवधिक कार्य करता है, इन्हें लंबे समय तक रोकता है, और मुझे कोई परवाह नहीं है कि कुछ नौकरियां निरस्त की जाएंगी - काम नई प्रक्रियाओं द्वारा समाप्त किया जा सकता है। तो क्या मैं इसे तुरंत रोकने के लिए kill -9 का उपयोग कर सकता हूं या इससे गंभीर ओएस समस्याएं हो सकती हैं?

आपका आवेदन धराशायी हो जाता है, एक BOFH सिर्फ सभी ग्राहकों के नीचे फाड़ के बारे में चिंता किए बिना "को मारने -9" कर सकते हैं भगोड़ा वर्कर प्रोसेस, बस:

उदाहरण, Unicorn के लिए, सामान्य काम प्रक्रिया के रूप में इसे इस्तेमाल करता है एक।

लेकिन इस article का दावा है:

-9 (या KILL) तर्क को मारने के लिए (1) कभी नहीं यूनिक्स सिस्टम पर इस्तेमाल किया जाना चाहिए

पुनश्च: मैं समझता हूँ कि kill -9 नहीं कर सकते आवेदन द्वारा संभाला जा सकता है, लेकिन मुझे पता है कि आवेदन के लिए यह किसी भी समस्या का कारण नहीं है, मैं सिर्फ इंटरेस्ट किया है क्या यह ओएस स्तर पर कुछ समस्याएं पैदा कर सकता है? shared memory segments active, lingering sockets मेरे लिए खतरनाक लगता है।

+1

आम तौर पर, 'kill -9' का उपयोग कभी करने की सलाह अच्छी नहीं होती है - जब आप अपने सॉफ़्टवेयर के बारे में जानना चाहते हैं कि उस सलाह को अनदेखा करना कब है, तो आप चिंता करना बंद कर देंगे और जो कुछ भी आप चाहते हैं उसे मारने में पागल हो जाएंगे। –

उत्तर

1

यह निर्भर करता है कि यह किस प्रकार का एप्लिकेशन है।

किसी डेटाबेस की तरह कुछ डेटा खो सकता है (यदि यह एक बार में लगातार लेनदेन लॉग में अपना डेटा नहीं लिखता है), या अगली बार या दोनों को शुरू करने में अधिक समय लगेगा।

हालांकि Crash-only एक अच्छा सिद्धांत है, वर्तमान में कुछ एप्लिकेशन इसके अनुरूप हैं।

उदाहरण के लिए, MySQL डेटाबेस "केवल क्रैश" नहीं है और इसे मार -9 के साथ मारना परिणामस्वरूप सेटिंग्स के आधार पर या तो काफी लंबे समय तक स्टार्टअप समय (क्लीन शटडाउन से), डेटा हानि या दोनों का परिणाम होगा (और कुछ हद तक, किस्मत)।

दूसरी ओर, Cassandra वास्तव में शटडाउन तंत्र के रूप में हत्या -9 के उपयोग को प्रोत्साहित करता है; यह कुछ और का समर्थन नहीं करता है।

4

kill -9 एप्लिकेशन को स्पष्ट रूप से बंद करने का मौका नहीं देता है।

आम तौर पर एक एप्लिकेशन SIGINT/SIGTERM पकड़ सकता है और साफ़ रूप से बंद कर सकता है (फाइल बंद करें, डेटा सहेजें आदि)। एक आवेदन SIGKILL (जो kill -9 के साथ होता है) को पकड़ नहीं सकता है और इसलिए यह इनमें से कोई भी (वैकल्पिक) सफाई नहीं कर सकता है।

एक बेहतर तरीका मानक kill का उपयोग करना है, और यदि एप्लिकेशन अनुत्तरदायी रहता है, तो kill -9 का उपयोग करें।

0

किल सिग्नल एप्लिकेशन द्वारा पकड़ा नहीं जा सकता है। यदि एप्लिकेशन इसे मारने पर डिस्क पर कुछ जटिल डेटा संरचना लिखने के बीच में है, तो संरचना केवल आधे लिखित हो सकती है, जिसके परिणामस्वरूप दूषित डेटा फ़ाइल हो सकती है। आमतौर पर USER1 जैसे कुछ अन्य सिग्नल को "स्टॉप" सिग्नल के रूप में कार्यान्वित करना सबसे अच्छा होता है, क्योंकि इसे पकड़ा जा सकता है और एप्लिकेशन को नियंत्रित तरीके से बंद करने की अनुमति मिलती है।

2

kill -9 कोई "गंभीर ओएस समस्याएं" नहीं पैदा करेगा। लेकिन प्रक्रिया तुरंत बंद हो जाएगी, जिसका मतलब है कि यह एक अजीब स्थिति में डेटा छोड़ सकता है।

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