/ Usr / lib / systemd / system और / etc / systemd / system में क्या अंतर है?


43

पहले सभी यूनिट फाइलें थीं /etc/systemd/system/लेकिन अब कुछ /usr/lib/systemd/system(<- CentOS पर, या /lib/systemd/system<- डेबियन / उबंटू पर) दिखाई दे रही हैं, इन फ़ोल्डरों में क्या अंतर है?

जवाबों:


38

यह सवाल पहले से ही उत्तर दिया गया है man 7 file-hierarchyजिसमें सिस्टमड के साथ आता है ( ऑनलाइन संस्करण भी है ):

        /etc
           System-specific configuration.
 (…)
 VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
       /usr
            Vendor-supplied operating system resources. 
            Usually read-only, but this is not required. Possibly 
            shared between multiple hosts. This directory should not
            be modified by the administrator, except when installing 
            or removing vendor-supplied packages.

मूल रूप से, वितरण रिपॉजिटरी से डाउनलोड किए गए पैकेज में जहाज की फाइलें जाती हैं /usr/lib/systemd/। सिस्टम प्रशासक (उपयोगकर्ता) द्वारा किए गए संशोधन में जाते हैं /etc/systemd/system/

सिस्टम-विशिष्ट इकाइयां विक्रेताओं द्वारा आपूर्ति की गई इकाइयों को ओवरराइड करती हैं। ड्रॉप-इन का उपयोग करते हुए, आप यूनिट फ़ाइलों के केवल विशिष्ट भागों को ओवरराइड कर सकते हैं, बाकी को वेंडर को छोड़ सकते हैं (ड्रॉप-इन्स सिस्टमड की शुरुआत से ही उपलब्ध हैं, लेकिन केवल v219 में ठीक से प्रलेखित थे; देखें man systemd.unit)।


20

पृष्ठभूमि

यदि आप मैन पेज को देखते हैं man systemd.unitतो इसमें एक तालिका है जो मतभेदों को बताती है। यह एक CentOS 7.x सिस्टम से है।

   UNIT LOAD PATH
          Unit files are loaded from a set of paths determined during 
          compilation, described in the two tables below. Unit files found 
          in directories listed earlier override files with the same name 
          in directories lower in the list.

           Table 1.  Load path when running in system mode (--system).
           ┌────────────────────────┬─────────────────────────────┐
           │Path                    │ Description                 │
           ├────────────────────────┼─────────────────────────────┤
           │/etc/systemd/system     │ Local configuration         │
           ├────────────────────────┼─────────────────────────────┤
           │/run/systemd/system     │ Runtime units               │
           ├────────────────────────┼─────────────────────────────┤
           │/usr/lib/systemd/system │ Units of installed packages │
           └────────────────────────┴─────────────────────────────┘

जब वे "स्थापित पैकेज" कहते हैं, तो वे किसी भी चीज़ का जिक्र करते हैं जो एक आरपीएम के माध्यम से स्थापित किया गया था। इसे डेबियन / उबंटू के लिए भी माना जा सकता है, जहां एक डीईबी फ़ाइल "स्थापित पैकेज" होगी।

नोट: एक डेबियन / उबंटू प्रणाली से ऊपर की मेज थोड़ा अलग है।

 Table 1.  Load path when running in system mode (--system).
       ┌────────────────────┬─────────────────────────────┐
       │Path                │ Description                 │
       ├────────────────────┼─────────────────────────────┤
       │/etc/systemd/system │ Local configuration         │
       ├────────────────────┼─────────────────────────────┤
       │/run/systemd/system │ Runtime units               │
       ├────────────────────┼─────────────────────────────┤
       │/lib/systemd/system │ Units of installed packages │
       └────────────────────┴─────────────────────────────┘

का विश्लेषण /usr/lib/systemd/system

आप बता सकते हैं कि /usr/lib/systemd/systemसेंटोस / फेडोरा / आरएचईएल सिस्टम पर इस तरह से कौन सी यूनिट की फाइल किस तरह की है:

$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64

का विश्लेषण /etc/systemd/system

यदि हम ऐसा ही करते हैं /etc/systemd/system, तो हम RPM के स्वामित्व वाली कोई फ़ाइल नहीं ढूंढने की अपेक्षा करेंगे (जो वास्तव में मेरे CentOS 7.x सिस्टम पर मामला है।)।

$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$

बाहरी कारकों के कारण

ध्यान रखें कि आपको कभी-कभी आवारा फ़ाइलें मिल सकती हैं /usr/lib/systemd/system, जैसे कि Virtualbox (vboxadd *) के साथ।

$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package

और भी हैं।

निष्कर्ष

उम्मीद यह है कि /usr/lib/systemd/systemएक निर्देशिका है जिसमें केवल सिस्टमड यूनिट फाइलें होनी चाहिए जो पैकेज मैनेजर (YUM / DNF / RPM / APT / etc) द्वारा वहां रखी गई थीं।

उन फ़ाइलों /etc/systemd/systemको मैन्युअल रूप से विज्ञापन-हॉक सॉफ़्टवेयर स्थापनाओं के लिए सिस्टम के ऑपरेटर द्वारा यहां रखा गया है जो पैकेज के रूप में नहीं हैं। इसमें टैरबॉल टाइप सॉफ्टवेयर इंस्टॉलेशन या होम ग्रो स्क्रिप्ट शामिल होंगे।


3
मैं इस Google परिणाम पर क्लिक करने के लिए अनिच्छुक था क्योंकि मैं /lib/systemd/system बनाम के बारे में उत्सुक था /usr/lib/systemd/system। मुझे खुशी है कि मुझे यह जवाब मिला।
ब्रूनो ब्रोंस्की

1
/etc/systemd/systemयदि आप इसे मुखौटा करते हैं Failed to execute operation: Invalid argument, तो एक सेवा परिभाषा रखने से एक त्रुटि उत्पन्न होती है :; systemd फ़ाइल को सिमिंक / dev / null के साथ बदलने का प्रयास करता है। यह उत्तर गलत नहीं है, बस याद रखने के लिए कुछ है।
मृणाल

@BrunoBronosky डेबियन वास्तव में दोनों का उपयोग करता है /lib/systemd/system और /usr/lib/systemd/system इसलिए, मैंने अलग से सवाल पूछा unix.stackexchange.com/questions/550001/…
pevik
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.