/ बिन में सहानुभूति और हार्डलिंक का मिश्रण क्यों है?


10

मैं सहानुभूति और हार्डलिंक के बीच तकनीकी अंतर को समझता हूं, यह अभ्यास में उनके उपयोग के बारे में एक प्रश्न है, विशेष रूप से मैं यह जानने के लिए उत्सुक हूं कि दोनों का समान परिस्थितियों में उपयोग क्यों किया जाता है: /binनिर्देशिका।

यहाँ मेरे सिस्टम पर इसका एक टुकड़ा है:

~$ ls -lai /bin
total 10508
32770 drwxr-xr-x  2 root root    4096 Jun 14 11:47 .
    2 drwxr-xr-x 28 root root    4096 Sep  6 13:15 ..
  119 -rwxr-xr-x  1 root root  959120 Mar 28 22:02 bash
   2820 -rwxr-xr-x  3 root root   31112 Dec 15  2011 bunzip2
  127 -rwxr-xr-x  1 root root 1832016 Nov 16  2012 busybox
   2820 -rwxr-xr-x  3 root root   31112 Dec 15  2011 bzcat
 6191 lrwxrwxrwx  1 root root       6 Dec 15  2011 bzcmp -> bzdiff
 5640 -rwxr-xr-x  1 root root    2140 Dec 15  2011 bzdiff
 5872 lrwxrwxrwx  1 root root       6 Dec 15  2011 bzegrep -> bzgrep
 3520 -rwxr-xr-x  1 root root    4877 Dec 15  2011 bzexe
 6184 lrwxrwxrwx  1 root root       6 Dec 15  2011 bzfgrep -> bzgrep
 5397 -rwxr-xr-x  1 root root    3642 Dec 15  2011 bzgrep
   2820 -rwxr-xr-x  3 root root   31112 Dec 15  2011 bzip2
 2851 -rwxr-xr-x  1 root root   10336 Dec 15  2011 bzip2recover
 6189 lrwxrwxrwx  1 root root       6 Dec 15  2011 bzless -> bzmore
 5606 -rwxr-xr-x  1 root root    1297 Dec 15  2011 bzmore

मैंने हार्डलिंक को बेहतर दृश्यता के लिए एक ही इनोड में प्रेरित किया। तो सिमलिंक के मामले में उपयोग किया जाता है bzcmp, bzegrep, bzfgrep, bzlessके मामले में और hardlinks bzip2, bzcat, bunzip2?

वे सभी नियमित फाइलें (निर्देशिका नहीं) हैं, एक फाइल सिस्टम के अंदर रहते हैं, सिस्टम उपयोगिताओं हैं और यहां तक ​​कि एक ही चीज के साथ काम करने के लिए बनाई गई हैं: bzip अभिलेखागार। क्या इस विशेष मामले में हार्डलिंक / सिमिलिंक के उपयोग के कारण विशुद्ध रूप से ऐतिहासिक हैं या मैं कुछ याद कर रहा हूं?

मेरे प्रश्न का स्पष्टीकरण:

मैं इसके बारे में नहीं पूछ रहा हूँ :

  • सीमलिंक और हार्डलिंक के बीच तकनीकी अंतर
  • सैद्धांतिक लाभ और उनमें से प्रत्येक को नुकसान

इन प्रश्नों को SO पर अन्य थ्रेड्स में संबोधित किया गया है। मैं यह समझने की कोशिश कर रहा हूं कि एक विशिष्ट मामले में अलग-अलग निर्णय क्यों किए गए: संबंधित सिस्टम उपयोगिताओं के समूह के लिए। तकनीकी रूप से, वे सभी सहानुभूति कर सकते थे या वे सभी हार्डलिंक हो सकते थे, दोनों विकल्प काम करेंगे (और दोनों ही मामलों में एक कार्यक्रम अभी भी यह पता लगा सकता है कि यह कैसे लागू किया गया है argv[0])। अगर कोई है तो मैं यहाँ आशय समझना चाहता हूँ।

सम्बंधित:


मुझे लगता है कि निर्णय लेने के लिए पैकेज अनुरक्षकों पर निर्भर है। fe मैं gentoo चलाता हूं, और मेरे /binतीसरे कॉलम में ls -laiहमेशा 1ऐसा होता है ताकि यह केवल सॉफ्ट लिंक्स का उपयोग करे। आप किस डिस्ट्रो का उपयोग करते हैं?
फिर से खेलना

मैं Ubuntu 12.04 का उपयोग करता हूं
दिमित्री पश्केविच

1
पहली नज़र में यह कुछ प्रकार का नियम लगता है: "बायनेरिज़ के लिए हार्डलिंक, स्क्रिप्ट्स / रैपर के लिए सिम्बलिंक्स"
पीटरफ

जवाबों:


5

हार्डलिंक बनाम प्रतीकात्मक लिंक का उपयोग क्यों करें

इस परिदृश्य में मुख्य रूप से प्रतीकात्मक लिंक पर हार्डलिंक का उपयोग करने के 3 फायदे हैं।

कड़ी कड़ी

  1. एक कड़ी के साथ, लिंक सीधे इनोड की ओर इशारा करता है।
  2. हार्ड लिंक निष्पादन योग्य की कई प्रतियों की तरह हैं, लेकिन केवल एक के डिस्क स्थान का उपयोग कर रहे हैं।
  3. आप बिना किसी को तोड़े कड़ी कड़ी की किसी भी शाखा का नाम बदल सकते हैं।

प्रतीकात्मक लिंक

  1. लिंक ऑब्जेक्ट को इंगित करता है (जो तब इनोड में बारी-बारी से इंगित करता है)।
  2. वे फाइल सिस्टम को फैला सकते हैं, जबकि हार्डलिंक नहीं कर सकते।

सामान्य रूप से जोड़ने के लाभ

ये लिंक मौजूद हैं क्योंकि कई निष्पादक अलग-अलग तरीके से व्यवहार करते हैं कि उन्हें कैसे बुलाया गया था। उदाहरण 2 आदेशों के लिए bzlessऔर bzmoreवास्तव में एक भी निष्पादन कर रहे हैं, bzmore। निष्पादन योग्य अलग-अलग व्यवहार करेगा, जिसके आधार पर इसे लागू करने के लिए नामों का उपयोग किया गया था।

यह विभिन्न कारणों से किया जाता है। यहाँ कुछ अधिक स्पष्ट हैं:

  1. कई के बजाय एक एकल निष्पादन योग्य विकसित करना आसान है
  2. डिस्क स्थान बचाता है
  3. तैनात करने में आसान

दोनों का उपयोग क्यों किया जा रहा है?

इस विशेष अनुप्रयोग में या तो विकल्प, मूट है। या तो एक उपनाम के रूप में अभिनय की सुविधा को सुविधाजनक बना सकता है ताकि एक एकल निष्पादन योग्य अतिभारित हो सके। यह वास्तव में प्रमुख विशेषता है जो विभिन्न कार्यक्रमों के डेवलपर्स द्वारा यहां शोषण किया जा रहा है।

को देख में FHS (फ़ाइल-सिस्टम अनुक्रम मानक) भी इसे इस तरह निर्दिष्ट करता है, कि यह या तो हो सकता है।

अंश

यदि / बिन / श एक असली बॉर्न शेल नहीं है, तो यह वास्तविक शेल कमांड के लिए एक कठिन या प्रतीकात्मक लिंक होना चाहिए।

इसके पीछे तर्क यह है कि sh और bash आवश्यक रूप से एक ही तरीके से व्यवहार नहीं कर सकते हैं। एक प्रतीकात्मक लिंक का उपयोग भी उपयोगकर्ताओं को आसानी से देखने के लिए अनुमति देता है कि बिन / श एक असली बॉर्न शेल नहीं है।

...

...

अगर गनज़िप और ज़कात कार्यक्रम मौजूद हैं, तो उन्हें प्रतीकात्मक या हार्ड लिंक होना चाहिए। / बिन / csh / bin / tcsh या / usr / bin / tcsh का प्रतीकात्मक लिंक हो सकता है।

संदर्भ


हाँ, मैं समझता हूँ कि, धन्यवाद, लेकिन कभी-कभी सहानुभूति का उपयोग क्यों किया जाता है, और कभी-कभी हार्डलिंक का उपयोग किया जाता है? आपने जो वर्णन किया है, वह दोनों मामलों में उसी तरह से काम करेगा
दिमित्री पश्केविच

@DmitryPashkevich - ठीक है मैंने अपना जवाब वापस ले लिया है, मुझे बताएं कि क्या यह बेहतर है।
SLM

शायद मैं एक गूंगा सवाल पूछ रहा हूं, लेकिन मुझे लगता है कि यह अभी भी अनुत्तरित है :) हां मैं दो प्रकार के लिंक के तकनीकी अंतर और फायदे / नुकसान से परिचित हूं। मैं एक विशिष्ट मामले को समझने की कोशिश कर रहा हूं: मैं अपनी /bin/निर्देशिका में बीओटीएच हार्डलिंक और सीमलिंक क्यों देख रहा हूं ? इन उपयोगिताओं के डेवलपर्स एक लिंक प्रकार से क्यों नहीं चिपके रहे?
दिमित्री पश्केविच

(उम्मीद है) मेरे मूल प्रश्न को संपादित करके स्पष्ट करें
दिमित्री पश्केविच

@DmitryPashkevich - ने कुछ अतिरिक्त सामग्री जोड़ी। मुझे बताएं कि क्या इससे लाभ होता है।
slm

5

ऐसा लगता है कि आप मौजूदा अभ्यास से यह पता लगाने की कोशिश कर रहे हैं कि क्या कोई गैर-तकनीकी नियम है जो आपको बताता है कि किस तरह के लिंक का उपयोग करना है। (मैं कहता हूं कि गैर-तकनीकी क्योंकि आप पहले से ही एक दूसरे पर उपयोग करने के तकनीकी कारणों को जानते हैं।)

जवाब है, कोई और नियम नहीं है। यह उदाहरण आपने उबंटू के bzip2पैकेज से इंगित किया है, बस यह दिखाने के लिए जाता है कि बहुत सारे डेवलपर्स उन्हें पूरे बहुत सारे बिना मिलावट के मिलाते हैं। ऐसा इसलिए है क्योंकि तकनीकी अंतर के अलावा कोई मजबूत मार्गदर्शन नहीं है, और वे अंतर छोटे हैं।

व्यक्तिगत रूप से, मैं हमेशा, सहानुभूति का उपयोग करना पसंद करता हूं, क्योंकि मैं उनके स्व-दस्तावेजी स्वभाव के बदले में उनके छोटे ओवरहेड के लिए भुगतान करने को तैयार हूं।

अन्य डेवलपर्स उनके द्वारा प्रदान की जाने वाली छोटी क्षमता के लिए कड़ी का चयन करेंगे।

यह समस्या रिक्त स्थान बनाम टैब या डायनेमिक बनाम स्टेटिक टाइपिंग या एमएसीएस बनाम vi जैसे बहुत कुछ है, यह सहेजें कि यह एक पवित्र युद्ध को चिंगारी करने के लिए पर्याप्त दिलचस्प नहीं है । अधिक दिलचस्प लड़ाइयों की तरह, या तो विकल्प चुनने के कारण हैं, लेकिन जब तक आपके पास कोई आपको बताने वाला नहीं है कि आपको किसका उपयोग करना है, तो आपको वह चुनना होगा जो आपके लिए अधिक समझ में आता है।


1
अपना दृष्टिकोण साझा करने के लिए धन्यवाद! मुझे लगता है कि सहानुभूति का "स्व-दस्तावेजीकरण" स्वभाव कुछ ऐसा है जिसे अक्सर अनदेखा किया जाता है
दिमित्री पश्केविच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.