डेबियन में स्टार्टअप और शटडाउन में स्क्रिप्ट कैसे जोड़ें?


12

शीर्षक बहुत अधिक यह रकम है।

मैं डेबियन ओएस के स्टार्टअप और शटडाउन अनुक्रम में अपने सर्वर ऐप में एक स्टार्टअप.श और शटडाउन कैसे जोड़ सकता हूं?

जवाबों:


15

डेबियन पर, सेवा और एप्लिकेशन बूट और शटडाउन स्क्रिप्ट को रखा जाना चाहिए /etc/init.d/

डेबियन एक उदाहरण स्क्रिप्ट प्रदान करता है /etc/init.d/skeletonजिसे आप अपने विशेष एप्लिकेशन के लिए अपने स्वाद में संशोधित कर सकते हैं।

एक बार इसके स्थान पर कॉल करें:

# update-rc.d YOURAPP defaults

डेबियन को आप के लिए /etc/rc?.d/सहानुभूति जोड़ें ।

यदि आप मेनू या चित्रमय इंटरफ़ेस पसंद करते हैं, तो sysv-rc-confया ksysvपैकेज पर एक नज़र डालें ।


4

आप अपनी स्क्रिप्ट को /etc/rc.local से कॉल कर सकते हैं , इससे पहले कि लाइन 0 से बाहर निकले

अपने ऐप को बंद करने के लिए, मैं /etc/rc0.d में स्क्रिप्ट डालने का सुझाव दूंगा । आपको अपर केस एक साथ इसे नाम की जरूरत है कश्मीर , और फिर एक 2 अंकों की संख्या है जो इन लिपियों चलाए जा रहे हैं, और फिर एक नाम निर्दिष्ट करता है। इसे एक पैरामीटर "स्टॉप" के साथ कहा जाएगा, लेकिन आप एक साधारण स्टॉप स्क्रिप्ट के लिए इसे अनदेखा कर सकते हैं।


जब आप पहले से ही /etc/rcX.d के साथ फ़ेल्ड हो गए हों, तो आप rc.local के आसपास सामान क्यों करेंगे?
Womble

साधारण स्टार्टअप सामग्री के लिए r.local उचित स्थान है - स्टार्ट / स्टॉप पैरामीटर आदि से निपटने की आवश्यकता नहीं है, लेकिन इसमें किसी प्रक्रिया को शट-डाउन करने की क्षमता नहीं है। Rc0.d सामान थोड़ा हैक है।
ब्रेंट

3

स्टार्टअप के लिए इस पर एक नजर है ।

शटडाउन के लिए, एक लिंक बनाएं / अपनी स्क्रिप्ट को /etc/rcX.d फ़ोल्डरों में से एक में कॉपी करें जहां एक्स रनले है जिसे आप इसे निष्पादित करना चाहते हैं। 0 डेबियन I के लिए शटडाउन रनवे है।


यह शटडाउन जानकारी है जिसकी मुझे आवश्यकता है। इसके लिए धन्यवाद, @squillman
हार्पर्विल

1

सबसे आसान मौजूदा स्क्रिप्ट को संशोधित करना है, मेरे सिस्टम में काम करता है, ध्वनियों के लिए उपयोग किया जाता है :)

  • स्टार्टअप, संशोधित करें /etc/init.d/rc.local, फ़ाइल के अंत में अपना श जोड़ें, पहले: (लॉगिन "स्क्रीन" से ठीक पहले इसे निष्पादित करेगा)
  • शटडाउन, संशोधित करें /etc/init.d/halt, आरंभिक टिप्पणियों के ठीक बाद, फ़ाइल की शुरुआत में अपना श जोड़ें
  • रिबूट, शटडाउन के समान, लेकिन अंदर /etc/init.d/reboot

1

डेबियन जेसी के बाद से, पुराने initकार्यक्रम को बदल दिया गया है systemd!

इसे स्वयं देखें। चलाएँ: ls -l /sbin/initऔर देखें कि यह किस ओर इशारा कर रहा है। इन दिनों यह systemd( /sbin/init -> /lib/systemd/systemd), एक नए और बेहतर आरंभीकरण कार्यक्रम की ओर इशारा करता है।


तो यहाँ और अन्य ANSWERS अब बाहर हैं !!!


* जबकि आप अभी भी सिस्टम-वी टूल्स के साथ स्क्रिप्ट को पुराने तरीके से स्थापित कर सकते हैं, यह आम तौर पर बोलने वाला एक अच्छा विचार नहीं है।

man systemd.service कहते हैं: *

यदि किसी निश्चित नाम के तहत एक सेवा का अनुरोध किया जाता है, लेकिन कोई इकाई कॉन्फ़िगरेशन फ़ाइल नहीं मिलती है, तो Systemd एक ही नाम से SysV init स्क्रिप्ट की तलाश करता है ... और गतिशील रूप से उस स्क्रिप्ट से एक सेवा इकाई बनाता है। यह SysV के साथ संगतता के लिए उपयोगी है। ध्यान दें कि यह संगतता काफी व्यापक है लेकिन 100% नहीं है।


नए डेबियन सिस्टम के लिए (जैसे जेसी, स्ट्रेच, बस्टर, आदि ...)

आपके हिसाब से यह आसान है। (-:

यहां बूट-अप या शटडाउन प्रोग्राम इंस्टॉल करने की नई और पसंदीदा विधि है।

systemdआप के साथ पहले एक इकाई फ़ाइल बनाना चाहते हैं । एक इकाई फ़ाइल ज्यादातर घोषणाएँ है, कोड नहीं।

फिर आप उस यूनिट systemctlको सक्षम या शुरू करने के लिए कमांड का उपयोग करेंगे ।

systemdआपके लिए बहुत से काम करता है, यह आसान बनाता है, उदाहरण के लिए, एक महत्वपूर्ण कार्यक्रम को स्वचालित रूप से फिर से शुरू करना अगर यह दुर्घटनाग्रस्त हो जाता है या अन्यथा मारा जाता है। इसके अलावा यह आपके कार्यक्रम को कहां और कब डिफ़ॉल्ट रूप से बंद करता है, इसके लिए आपके हिस्से पर कोई अतिरिक्त काम नहीं करना चाहिए।


systemdयहाँ के बारे में जानने के लिए शुरू करें:

डेबियन और अन्य जगहों से और आदि और आदि


इसके साथ शुरू करने के लिए मैन पेज:

man systemd.unit - सामान्य रूप से इकाई फ़ाइलों के बारे में
man systemd.service - सेवा इकाई फ़ाइलों के बारे में, जैसे डेमॉन और एकल रन प्रोग्राम।

man systemctl - कमांड लाइन यूजर इंटरफेस
man journalctl- देखें कि सिस्टम ने क्या किया है

man systemd - इनिट प्रोग्राम के बारे में ही


विभिन्न प्रकार की यूनिट फाइलें भी हैं, जैसे

man systemd.target - समूहों और आम सिंक किए गए लक्ष्यों के लिए।

एक बार जब आप ऊपर की मूल बातें पचा लेते हैं, तो man -k systemdअन्य संबंधित मैन पेज खोजने के लिए खुदाई करते हैं।



आप जो भी करते हैं, डेबियन पर इनमें से किसी का उपयोग नहीं करते हैं :

  • update-rc.d - स्थापना और सिस्टम-वी शैली init स्क्रिप्ट लिंक को हटा दें
  • sysv-rc-conf - इनसाइट स्क्रिप्ट लिंक की तरह SysV के लिए रन-स्तरीय कॉन्फ़िगरेशन
  • runlevel - पिछले और वर्तमान SysV रनवे को प्रिंट करें
  • BUM- बी oot यू पी एम एगर - एक ग्राफिकल रनलेवल संपादक
  • systemadm- सिस्टम सिस्टम और सर्विस मैनेजर
    (BTW) के लिए ग्राफिकल फ्रंटेंड , लेखक ने मुझे ईमेल से बताया कि यह अब टूट चुका है।)


एक उदाहरण:

जब मैं बूट करता हूं तो यह यूनिट फाइल NoIP.com डेमॉन शुरू करती है, और जब मैं शटडाउन करता हूं तो इसे बंद कर देता है।

यह डेमन, समय-समय पर, मेरे DDNS ( D ynamic DNS ( D omain N ame S erver)) प्रदाता के डेटा बेस को अपडेट करने के लिए मेरा वर्तमान आईपी पता भेजता है , इस प्रकार मेरे डोमेन का नाम मेरे कंप्यूटर पर इंगित करता रहता है जहाँ भी यह यात्रा करता है।

यह यूनिट फ़ाइल इस सेटिंग फ़ाइल में मेरे सिस्टम पर स्थित है: /etc/systemd/system/noip2.service

यहाँ इकाई फ़ाइल में क्या है:

#   Comments can only go at the beginning of the line!

[Unit]
Description=Start the NoIP IP update daemon.  This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST


[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking

# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2

# Be in no hurry to start this.  Max nice is +19.
Nice=15

# If it dies for any reason, then restart it
Restart=always


[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target

मैन्युअल रूप से एक इकाई फ़ाइल चलाएँ , (उदाहरण के लिए परीक्षण):

  • से शुरू करें $ sudo systemctl start noip2
  • के साथ पुनः आरंभ$ sudo systemctl restart noip2
  • रोक के साथ $ sudo systemctl stop noip2

प्रारंभ या बंद होने पर स्वचालित रूप से एक इकाई फ़ाइल चलाने के लिए सिस्टम कॉन्फ़िगर करें :

  • के साथ प्रयोग करना शुरू करें $ sudo systemctl enable noip2
  • के साथ अंत का उपयोग कर $ sudo systemctl disable noip2

लॉग देखें

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