डेबियन: शेल स्क्रिप्ट की 30 लाइनें लिखने के बिना स्टार्टअप पर स्क्रिप्ट कैसे चलाएं?


20

मेरे पास एक डेबियन सर्वर है और मुझे स्टार्टअप पर एक स्क्रिप्ट चलाने की आवश्यकता है।

मैंने पढ़ा है कि: https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian

मुझे अब मिला: insserv: चेतावनी: स्क्रिप्ट का लापता LSB टैग और ओवरराइड

तो ऐसा लगता है कि मुझे अभी जोड़ना है:

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

यह अब पागल लग रहा है: स्टार्टअप पर एक कार्यक्रम चलाने के लिए स्क्रिप्ट की 30 लाइनों की तरह।

क्या कोई ऐसा उपकरण है जो इसे सरल तरीके से करने की अनुमति देता है?

सादर


यह किस तरह की स्क्रिप्ट है? क्या आपने इसे /etc/rc.local से चलाने की कोशिश की है? आप स्क्रिप्ट को rc.local फ़ाइल में रख सकते हैं और इसे बूट समय पर निष्पादित किया जाएगा।
दीमंत

एक सरल स्क्रिप्ट जो नोड प्रक्रिया शुरू करती है, एक php आदि शुरू करती है ...
yarek

मैं 9 लाइनें गिनता हूं, 30 नहीं। और वे टिप्पणियां हैं, शेल स्क्रिप्ट नहीं (और एसएसएच स्क्रिप्ट नहीं)।
wurtel

वे एलएसबी हेडर हैं (देखें wiki.debian.org/LSBInitScripts ) और एक एलएसबी इनिट स्क्रिप्ट बॉयलरप्लेट 70 लाइनों के उत्तर में है ( github.com/fhd/init-script-tcript/blob/master/template जैसी चीजें देखें )। यदि आप चाहते हैं कि कंप्यूटर द्वारा बूट / आदि में किसी फ़ाइल के माध्यम से बूट करने के लिए हाथ से चलाए जाने वाला एक ही कमांड बनाया जाए, तो यह काफी विस्तृत समारोह लगता है!

जवाबों:


29

यदि आपकी स्क्रिप्ट "बस एक स्क्रिप्ट" है, और एक डेमॉन शुरू नहीं करता है, तो /etc/rc.local(रूट के रूप में निष्पादित) या crontab(अपनी पसंद के उपयोगकर्ता के रूप में निष्पादित) पर विचार करें।

दो उदाहरण:

  • /etc/rc.local

    #!/bin/sh -e
    #(Multiple lines of comments removed.)
    /usr/local/bin/your-script.sh
    exit 0
    
  • crontab(उदाहरण के लिए, के माध्यम से संपादित crontab -e)

    #(Multiple lines of comments removed.)
    @reboot /usr/local/bin/your-script.sh
    

संपादन 1: बस अपनी टिप्पणी पढ़ें: यदि आपकी स्क्रिप्ट में डेमॉन शुरू होता है, जो हर समय चलना चाहिए, तो मैं उपयोग करने के खिलाफ सलाह दूंगा, rc.localया crontabइसके बजाय एक उचित (या एकाधिक) init.dस्क्रिप्ट लिखता हूं । इस तरह आप / आपका सिस्टम डेमॉन को पुनः आरंभ / पुनः लोड / प्रारंभ / बंद करने में सक्षम है।

संपादन 2: आप इसे पागल कहते हैं, लेकिन LSB tagsकुछ मूल्य प्रदान करते हैं: "init.d स्क्रिप्ट के लिए रन-टाइम निर्भरता का दस्तावेजीकरण करके, वर्तमान बूट ऑर्डर को सत्यापित करना संभव हो जाता है, इन निर्भरता का उपयोग करके बूट ऑर्डर करें, और बूट स्क्रिप्ट को अंदर चलाएं बूट प्रक्रिया को गति देने के लिए समानांतर। " अधिक जानकारी के लिए, डेबियन विकी के लिए जाएं

(वैसे: यह एक चेतावनी है, इसलिए वास्तव में, यह आपके ऊपर है, कि कैसे और क्या करना है।)


मुझे crontab संस्करण पसंद है .. लेकिन मुझे नहीं लगता कि @reboot डेबियन पर काम करता है!
येरेक

@yarek: यह काम करता है, इसका उपयोग खुद (स्क्रिप्ट के लिए, जो सिर्फ स्क्रिप्ट हैं)।
gf_ 18

2
यह काम करता है, लेकिन मुझे लगता है कि यह केवल रूट उपयोगकर्ता के लिए है, इसलिए आपको करना होगा@reboot root /usr/local/bin/your-script.sh
Froggiz

btw मैं डेबियन के बारे में बात कर रहा था!
फ्रूगिज़

मैं वास्तव में अभी भी बहुत उलझन में हूं: क्या सर्वर के पुनरारंभ होने पर क्रोन किसी भीस्क्रिप्ट को चलाने में सक्षम करता है, सत्र को रूट के रूप में नहीं खोलता है।
yarek

0

पर्यवेक्षक भी एक विकल्प है। अपने नोड.जेएस और PHP सामान को शुरू करने के लिए आप फिर से कुछ पंक्तियाँ लिखेंगे, लेकिन वे कम होंगी।


0

आप इसके लिए monitd का उपयोग कर सकते हैं , बस कुछ monit परिभाषा लिख ​​सकते हैं और यह आपके लिए डेमॉन शुरू कर देगा। लेकिन आप LSB स्क्रिप्ट के साथ उचित तरीके का उपयोग क्यों नहीं करते हैं? इसे लिखना इतना कठिन नहीं है (आप इसे सिर्फ एक बार लिख रहे हैं) और यह इसे प्राप्त करने का सबसे साफ और सबसे मूल्यवान तरीका है।

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