सेवा बनाम व्यवस्थित स्क्रिप्ट - जो उपयोग करने के लिए


24

फेडोरा में हमारे पास 'सिस्टेमक्टल' और 'सर्विस' स्क्रिप्ट हैं। ऐसा लगता है कि सेवा आंतरिक रूप से कॉल करती है systemctl। तो फेडोरा पर सेवाओं को शुरू करने या रोकने के लिए सही / सही तरीका क्या है - इसके माध्यम से systemctlया serviceसुविधा के माध्यम से ? क्या ध्यान में रखने के लिए बारीकियां हो सकती हैं?


3
डेबियन उपयोगकर्ता, इसलिए सुनिश्चित करने के लिए जवाब नहीं दे सकता है, लेकिन service foo startडेबियन काम करता है कि क्या आपके init सिस्टम systemd या sysvinit या upstart है; systemctlअगर सिस्टम PID1 नहीं है, तो संभवतः काम नहीं करेगा।
शादुर

जवाबों:


14

फेडोरा (बाद के संस्करणों) में सेवाओं को रोकने / शुरू करने का तरीका उपयोग कर रहा है systemctl

हालाँकि, कुछ सेवाएँ बची रह /etc/init.d/सकती हैं जिनमें आप serviceकमांड से नियंत्रण कर सकते हैं । आप अभी भी उन्हें अपने साथ नियंत्रित कर सकते हैं systemctlक्योंकि systemdस्वचालित रूप से उन्हें आपके लिए इकाई फ़ाइलों में मैप करता है।

उदाहरण के लिए, मेरे सेंटोस 7 (फेडोरा 19 या थैरेआउट) पर, एक /etc/rc.d/init.d/networkस्क्रिप्ट है जिसे मैं serviceकमांड के साथ नियंत्रित कर सकता हूं । अगर मैं systemctlइसके बजाय उपयोग करता हूं , तो यह अभी भी काम करता है:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

जैसा कि आप देख सकते हैं, यह /etc/rc.d/init.d/networkद्वारा मैप किया गया है systemdऔर systemctlकमांड इसे नियंत्रित करता है।

मैं इतना 'पिछले साल' हो सकता है और serviceइसके बजाय उपयोग कर सकते हैं:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

दोनों काम करते हैं, लेकिन ध्यान दें कि वे अपनी statusआज्ञाओं में अलग-अलग परिणाम देते हैं।


10

यह आम तौर पर ऐसा होता है कि serviceस्क्रिप्ट को सिस्टमैक्टल (सिस्टमड) स्क्रिप्ट पर पुनर्निर्देशित किया जाता है, इसलिए यह मूल रूप से आपकी प्राथमिकता है जिसे आप उपयोग करना चाहते हैं।

उदाहरण

मेरे फेडोरा 20 सिस्टम से।

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

मैं आमतौर पर दोनों तरीकों का उपयोग करता हूं, क्योंकि पुरानी आदतें मुश्किल से मरती हैं। लेकिन अगर आप Systemd दुनिया के अनुकूल होने की कोशिश कर रहे हैं, तो मैं अपने आप को systemctlयदि संभव हो तो चीजों का उपयोग करने के लिए मजबूर करना जारी रखूंगा ।

साथ ही सिस्टमड वह सब कुछ लाता है जो आप एक कमांड के साथ chkconfigऔर उसके serviceतहत करते थे systemctl, इसलिए मुझे आमतौर पर लंबे समय में सामना करना आसान लगता है।

फेडोरा प्रोजेक्ट की वेबसाइट पर यह चेसशीट स्विच बनाने में सहायक है।

   SS1

संयोग से, आपके मूल प्रश्न का उत्तर उस पृष्ठ पर एक फुटनोट में दिया गया है:

ध्यान दें कि ऊपर सूचीबद्ध सभी / sbin / सेवा और / sbin / chkconfig लाइनें सिस्टमड पर काम करना जारी रखती हैं, और आवश्यकतानुसार मूल समकक्षों में इसका अनुवाद किया जाएगा। एकमात्र अपवाद chkconfig --list है।

संदर्भ

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