POSIX सिस्टम पर, समाप्ति संकेतों में आमतौर पर निम्न क्रम होता है (कई MAN पृष्ठों और POSIX कल्पना के अनुसार):
SIGTERM - विनम्रता से एक प्रक्रिया को समाप्त करने के लिए कहें। यह अस्थायी रूप से फ़ाइलों को हटाने और सभी संसाधनों (फ़ाइलों, सॉकेट्स, चाइल्ड प्रॉसेस, आदि) की सफाई करते हुए, शान से समाप्त हो जाएगा।
हस्ताक्षर - अधिक बलपूर्वक अनुरोध। यह अपमानजनक, अभी भी संसाधनों की सफाई को पूरी तरह से समाप्त करने की आवश्यकता है, लेकिन शायद अस्थायी फ़ाइलों को नष्ट न करें, शायद डिबग जानकारी कहीं लिखें; कुछ सिस्टम पर एक कोर डंप भी लिखा जाएगा (भले ही संकेत ऐप द्वारा पकड़ा जाए या नहीं)।
SIGKILL - सबसे जोरदार अनुरोध। प्रक्रिया को कुछ भी करने के लिए नहीं कहा जाता है, लेकिन सिस्टम प्रक्रिया को साफ करेगा, चाहे वह ऐसा हो या न हो। सबसे अधिक संभावना एक कोर डंप लिखा है।
SIGINT उस तस्वीर में कैसे फिट होता है? एक CLI प्रक्रिया आमतौर पर SIGINT द्वारा समाप्त की जाती है जब उपयोगकर्ता CRTL + C से टकराता है, हालांकि एक पृष्ठभूमि प्रक्रिया को SIGINT द्वारा KIL उपयोगिता का उपयोग करके भी समाप्त किया जा सकता है। अगर मैं SIGINT SIGTERM से अधिक या कम बलशाली हो या SIGINT और SIGTERM के बीच कोई अंतर हो तो क्या मैं चश्मे या हेडर फ़ाइलों में नहीं देख सकता।
अपडेट करें:
टर्मिनेशन सिग्नल का सबसे अच्छा विवरण जो मुझे अब तक मिला है वह GNU LibC प्रलेखन में है । यह बहुत अच्छी तरह से समझाता है कि SIGTERM और SIGQUIT के बीच एक अंतर है।
यह SIGTERM के बारे में कहता है:
किसी कार्यक्रम को विनम्रतापूर्वक समाप्त करने का सामान्य तरीका है।
और यह SIGQUIT के बारे में कहता है:
[...] और एक कोर डंप का उत्पादन करता है जब यह प्रक्रिया को समाप्त करता है, बस प्रोग्राम त्रुटि संकेत की तरह। आप इसे उपयोगकर्ता द्वारा प्रोग्राम एरर कंडीशन "डिटेक्ट" के रूप में सोच सकते हैं। [...] SIGQUIT को संभालने में कुछ प्रकार के क्लीनअप्स को छोड़ दिया जाता है। उदाहरण के लिए, यदि प्रोग्राम अस्थायी फ़ाइलें बनाता है, तो उसे अस्थायी फ़ाइलों को हटाकर अन्य समाप्ति अनुरोधों को संभालना चाहिए। लेकिन SIGQUIT के लिए बेहतर है कि उन्हें डिलीट न किया जाए, ताकि उपयोगकर्ता कोर डंप के साथ मिलकर उनकी जांच कर सकें।
और SIGHUP को भी पर्याप्त रूप से समझाया गया है। SIGHUP वास्तव में एक समाप्ति संकेत नहीं है, इसका मतलब है कि उपयोगकर्ता के लिए "कनेक्शन" खो गया है, इसलिए एप्लिकेशन उपयोगकर्ता से किसी भी आगे के आउटपुट (जैसे stdout / stderr आउटपुट) को पढ़ने की उम्मीद नहीं कर सकता है और उम्मीद से कोई इनपुट नहीं है अब किसी भी उपयोगकर्ता। अधिकांश ऐप के लिए जिसका अर्थ है कि वे बेहतर तरीके से छोड़ देते हैं। सिद्धांत रूप में एक ऐप यह भी तय कर सकता है कि यह राइट मोड में जाता है जब एक SIGHUP प्राप्त होता है और अब एक पृष्ठभूमि प्रक्रिया के रूप में चलता है, एक कॉन्फ़िगर लॉग फ़ाइल में आउटपुट लिखता है। पहले से ही पृष्ठभूमि में चल रहे अधिकांश डेमों के लिए, S आमतौर पर इसका अर्थ है कि वे अपनी कॉन्फ़िगरेशन फ़ाइलों को फिर से जांचेंगे, इसलिए आप इसे कॉन्फ़िगर फ़ाइलों को संपादित करने के बाद पृष्ठभूमि प्रक्रियाओं में भेजते हैं।
हालाँकि इस पृष्ठ पर SIGINT की कोई उपयोगी व्याख्या नहीं है, इसके अलावा यह CRTL + C द्वारा भेजा गया है। क्या कोई कारण है कि कोई SIGTERM से अलग तरीके से SIGINT को हैंडल करेगा? यदि हां, तो इसका क्या कारण होगा और हैंडलिंग अलग कैसे होगी?
sudo fuser -l
आपके कमांड प्रॉम्प्ट पर टाइप करके पाया जा सकता है । मेरे लिए यह लाता है:HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED
kill -l
संकेतों की सूची के लिए भी प्रयास करें ।