"किल" कमांड को ऐसा क्यों कहा जाता है?


17

killकमांड को "मार" कहने का फैसला क्यों किया गया ?

मेरा मतलब है, हां, इस उपयोगिता का उपयोग अक्सर प्रक्रियाओं को समाप्त करने के लिए किया जाता है, लेकिन इसका उपयोग वास्तव में किसी भी संकेत को भेजने के लिए किया जा सकता है।

यह थोड़ा भ्रामक नहीं है? शायद कुछ ऐतिहासिक कारण हैं।

मुझे यह सब पता है man killकि यह कमांड संस्करण 3 एटी एंड टी यूनिक्स में दिखाई दिया था।


8
निश्चित रूप से आपने अपने स्वयं के प्रश्न का उत्तर दिया है, कमांड की उत्पत्ति प्रक्रियाओं को समाप्त करने के साधन के रूप में हुई है - एक लंबे समय से पहले (ऐतिहासिक कारण)। एक बार जब आपके पास एक उपकरण होता है जो संकेतों को लगभग अपरिहार्य भेज देता है कि यह पुन: उत्पन्न हो जाएगा ...
मर्फ़

2
(अतिशयोक्ति) हालांकि मुझे सीधे यूनिक्स के साथ बहुत कम अनुभव है, क्या यह कमांड नामों की संक्षिप्तता से संबंधित हो सकता है? उदाहरण के लिए अधिकांश कमांड में बहुत कम नाम "आदमी", "एलएस", "सीडी" "एमकेडीआर" हैं। शायद यह टर्मिनलों के लिए 80 कॉलम की सीमा से संबंधित है। फिर से, मुझे यकीन नहीं हो रहा है क्योंकि मुझे सीधे यूनिक्स के साथ भारी मात्रा में अनुभव नहीं मिला है
जेमी टेलर

2
@ जैमी टेलर: मुझे लगता है कि शॉर्ट कमांड नामों का मुख्य कारण आलस्य है। हमें ज्यादा टाइप करना पसंद नहीं है। मैंने हाल ही में सीखा है कि cdकहा जाता था chdir, जो निश्चित रूप से पागलपन है! इस तरह के एक आम ऑपरेशन के लिए 5 अक्षर? मैं लोग हैं, जो अन्य नाम पता lsकरने के लिए l;-)
जोआचिम सौएर

3
क्योंकि प्रोग्रामर बहुत आलसी थे टाइप करने के लिए assassinateहर बार वे इसका इस्तेमाल करते थे
briddums

1
@shabunc - धन्यवाद, मैं देख सकता हूँ कि कैसे मेरे उत्तर का क्रम भ्रामक रहा होगा, इसलिए मैंने इसे और अधिक प्रत्यक्ष उत्तर देने के लिए पुनः आदेश दिया है।
मार्क बूथ

जवाबों:


23

मूल रूप से, killकमांड केवल एक प्रक्रिया को मार सकता है, केवल बाद में killआपको कोई संकेत भेजने की अनुमति देने के लिए बढ़ाया गया था ।

यूनिक्स (1979) के संस्करण 7 के बाद से डिफ़ॉल्ट प्रक्रिया को एक तरह से संकेत देने के लिए किया गया है जिसे पकड़ा जा सकता है और या तो इनायत से या नजरअंदाज किया जा सकता है ( SIGTERM सिग्नल भेजकर ), लेकिन इसका उपयोग गलीचा को नीचे खींचने के लिए भी किया जा सकता है। एक प्रक्रिया (एक SIGKILL सिग्नल kill -9भेजता है जिसे पकड़ा नहीं जा सकता है और इस तरह इसे नजरअंदाज नहीं किया जा सकता है)।

पृष्ठभूमि

कम्प्यूटिंग, और विशेष रूप से यूनिक्स, रूपक के साथ व्याप्त है।

प्रक्रियाओं के लिए मुख्य रूपक एक जीवित चीज है जो पैदा होता है, जीवित होता है और मर जाता है।

यूनिक्स में init को छोड़कर सभी प्रक्रियाओं में माता-पिता होते हैं , और कोई भी प्रक्रिया जो अन्य प्रक्रियाओं को जन्म देती है , उनमें बच्चे होते हैं । प्रक्रियाएं अनाथ हो सकती हैं (यदि उनके माता-पिता की मृत्यु हो जाती है) और यहां तक ​​कि लाश बन सकती है , अगर वे अपनी मृत्यु के बाद चारों ओर लटकाते हैं।

इस प्रकार, killकमांड इस रूपक के साथ फिट बैठता है।

यूनिक्स पुरातत्व

से मैन्युअल पृष्ठ यूनिक्स (संस्करण जहां के संस्करण 4 से kill, पेश किया गया था के साथ ps) हम पाते हैं:

NAME
        kill - do in an unwanted process
SYNOPSIS
        kill processid ...
DESCRIPTION
        Kills the specified processes.
        The processid of each asynchronous process
        started with `&' is reported by the shell.
        Processid's can also be found by using ps (I).

        The killed process must have
        been started from the same typewriter
        as the current user, unless
        he is the superuser.
SEE ALSO
        ps(I), sh(I)

मुझे इस आदमी पृष्ठ का अंतिम भाग विशेष रूप से पसंद है:

BUGS
        Clearly people should only be allowed to kill
        processes owned by them, and having the same typewriter
        is neither necessary nor sufficient.

जब तक पांचवां संस्करण चारों ओर आ killगया था , तब तक किसी भी सिग्नल को भेजने की अनुमति देने के लिए कमान पहले ही ओवरलोड हो चुकी थी।

से यूनिक्स प्रोग्रामर्स मैनुअल, पांचवें संस्करण (p70):

If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).

डिफ़ॉल्ट हालांकि एक सिग्नल 9 भेजने के लिए था, क्योंकि सिग्नल 15 अभी तक मौजूद नहीं था (देखें p150)।

साथ संस्करण 6kill आदमी पृष्ठ अब उल्लेख ही टाइपराइटर बग।

यह केवल यूनिक्स के संस्करण 7 के साथ था जो सिग्नल 15 को पेश किया गया था (देखें सिग्नल देखें (2) और v7 के लिए किल (1) मैन पेज) और killसिग्नल 9 का उपयोग करने के बजाय उस पर स्विच किया गया।


26

यह यूनिक्स है।

kill एक प्रक्रिया को मारने में सक्षम नहीं है।

mv नाम बदलने और न केवल फ़ाइलों को एक स्थान से दूसरे स्थान पर ले जाने में सक्षम है।

touch एक फ़ाइल बनाने में सक्षम है और न केवल इसके अंतिम संशोधन समय को बदल सकता है।

od ऑक्टल डंप का मतलब है, लेकिन कई और प्रकार के डंप करने में सक्षम है।

yes उत्पादन करने में सक्षम है नं।

अधिक विदेशी:

grepएक edही ऑपरेशन करने वाले कमांड के नाम पर रखा गया है :g/re/p

awk इसके लेखकों के नाम पर है: अहो, वेनबर्गर और कर्निघन।

yaccअभी तक एक और संकलक का मतलब है। ध्यान दें कि bisonGNU याक है।


17
पूरी तरह से निष्पक्ष होने के लिए, फ़ाइल को स्थानांतरित करने और नाम बदलने के बीच का अंतर मनमाना है। "नाम बदलना" एक फ़ाइल को एक अलग स्थान पर ले जा रहा है जो उसी निर्देशिका में होता है।
तिखन जेल्विस

mv एक नया आईनोड (?) बनाते हैं और पुराने इनोड से फाइल कंटेंट के संदर्भ को नए में ले जाते हैं। सिवाय जब यह एक ही डिवाइस पर नहीं है। फिर यह सामग्री की प्रतिलिपि बनाता है और इनोड को निकालता है।
पॉल

3
मजे की बात यह है कि आप एक ऐसी फाइल को एमवी / आरएम कर सकते हैं जो किसी अन्य प्रक्रिया द्वारा खुली हो। अन्य प्रक्रिया में अभी भी फ़ाइल सामग्री का संदर्भ है। अन्य ओएस से अलग
पॉल

+1 करने के लिए मुझे हाँ के साथ भ्रमित करने का भी अर्थ है
जेमी टेलर

@Paul - मेरा यूनिक्स बहुत रूखा है, लेकिन मुझे लगता है कि आपके पास यह थोड़ा पिछड़ा हुआ है। इनकोड फ़ाइल की विशिष्ट पहचानकर्ता है। तो, उसी डिवाइस के मामले में, एक नई निर्देशिका प्रविष्टि उसी इनोड की ओर इशारा करते हुए बनाई जाती है और फिर मूल निर्देशिका प्रविष्टि को हटा दिया जाता है। मुझे आश्चर्य है कि Apple ने "इनोड" पर किसी पर मुकदमा क्यों नहीं किया।
ओल्डफार्ट

0

यूनिक्स संस्करण 7 मार मैनुअल पेज राज्यों:

kill - terminate a process with extreme prejudice

तथा

This will kill processes that do not catch the signal; in particular `kill -9 ...'  is a sure kill.

उस कमांड किल को न बुलाने का कोई अच्छा कारण नहीं होगा जो निश्चित रूप से सबसे अच्छा रूपक उपलब्ध हो।

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