जवाबों:
यह सवाल पहले से ही उत्तर दिया गया है 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
)।
यदि आप मैन पेज को देखते हैं 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
को मैन्युअल रूप से विज्ञापन-हॉक सॉफ़्टवेयर स्थापनाओं के लिए सिस्टम के ऑपरेटर द्वारा यहां रखा गया है जो पैकेज के रूप में नहीं हैं। इसमें टैरबॉल टाइप सॉफ्टवेयर इंस्टॉलेशन या होम ग्रो स्क्रिप्ट शामिल होंगे।
/etc/systemd/system
यदि आप इसे मुखौटा करते हैं Failed to execute operation: Invalid argument
, तो एक सेवा परिभाषा रखने से एक त्रुटि उत्पन्न होती है :; systemd फ़ाइल को सिमिंक / dev / null के साथ बदलने का प्रयास करता है। यह उत्तर गलत नहीं है, बस याद रखने के लिए कुछ है।
/lib/systemd/system
और /usr/lib/systemd/system
इसलिए, मैंने अलग से सवाल पूछा unix.stackexchange.com/questions/550001/…
/lib/systemd/system
बनाम के बारे में उत्सुक था/usr/lib/systemd/system
। मुझे खुशी है कि मुझे यह जवाब मिला।