स्टार्टअप पर एक जार फ़ाइल कैसे बनाएं और जब आप लॉग आउट करते हैं?


30

मुझे पता नहीं है कि कहां से देखना शुरू करना है। मैं डेमॉन के बारे में पढ़ रहा हूं और अवधारणा को समझ नहीं पाया।

अधिक जानकारी :

  • मैं एक क्रॉलर लिख रहा हूं जो कभी भी इंटरनेट पर RSS पर नहीं रुकता और क्रॉल करता है।
  • क्रॉलर को जावा में लिखा गया है - इसलिए अभी इसका जार है।
  • मैं एक मशीन पर एक व्यवस्थापक हूँ जो Ubuntu 11.04 है।
  • मशीन के दुर्घटनाग्रस्त होने की कुछ संभावना है, इसलिए मैं चाहता हूं कि जब भी आप मशीन को स्टार्टअप करें, तो हर बार क्रॉलर चला जाए।
  • इसके अलावा, मैं इसे तब भी चालू रखना चाहूंगा जब मैंने लॉग आउट किया था। मुझे यकीन नहीं है कि यह संभव है, लेकिन अधिकांश समय मैं लॉग आउट हूं, और मैं अभी भी इसे क्रॉल करना चाहता हूं।

कोई विचार? क्या कोई मुझे सही दिशा दिखा सकता है?

बस सबसे सरल उपाय की तलाश है।

जवाबों:


32

यहाँ SysVInit का उपयोग करने का एक आसान तरीका है। निर्देश:

  1. अपने एप्लिकेशन की शुरुआत और स्टॉप स्क्रिप्ट बनाएं। इसे कुछ निर्देशिका पर रखें, हमारे उदाहरण में है:

    • स्क्रिप्ट शुरू करें: /usr/local/bin/myapp-start.sh
    • आलेख रोकें: /usr/local/bin/myapp-stop.sh

    प्रत्येक एक ऐप को चलाने / रोकने के लिए निर्देश प्रदान करेगा। उदाहरण के लिए myapp-start.shसामग्री निम्नलिखित के रूप में सरल हो सकती है:

    #!/bin/bash
    
    java -jar myapp.jar 
    

    स्टॉप स्क्रिप्ट के लिए यह कुछ इस तरह हो सकता है:

    #!/bin/bash
    # Grabs and kill a process from the pidlist that has the word myapp
    
    pid=`ps aux | grep myapp | awk '{print $2}'`
    kill -9 $pid
    
  2. निम्नलिखित स्क्रिप्ट बनाएं ( myscript) और इसे डालें /etc/init.d

    /etc/init.d/myscript सामग्री:

    #!/bin/bash
    # MyApp
    #
    # description: bla bla
    
    case $1 in
        start)
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
        stop)
            /bin/bash /usr/local/bin/myapp-stop.sh
        ;;
        restart)
            /bin/bash /usr/local/bin/myapp-stop.sh
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
    esac
    exit 0
    
  3. सिस्टम के साथ शुरू करने के लिए स्क्रिप्ट रखो (SysV का उपयोग करके)। बस निम्नलिखित कमांड चलाएँ ( रूट के रूप में ):

    update-rc.d myscript defaults 

पुनश्च: मुझे पता है कि अपस्टार्ट महान है और bla bla है, लेकिन मैं पुराने SysV init सिस्टम को प्राथमिकता देता हूं।


1
लेकिन सिस्टम को कैसे पता चलेगा कि पैरामीटर क्या उपयोग करेगा? कैसे "शुरू" होने के लिए सेट करें। यहां कोशिश की और बात नहीं बनी।
जॉन जॉन पिचलर

1
यह काम करता है, लेकिन कमांड "सर्विस मैप स्टार्ट" कमांड से बाहर नहीं निकलता है।
तोबिया

अब myscript में ऑप्शन स्टार्ट | स्टॉप | रिस्टार्ट विकल्पों का उपयोग कैसे करें?
कोडवेल्ले

इसके अलावा, 3 चरणों को करने के बाद भी, मेरा जार स्टार्टअप पर नहीं चल रहा है। क्या आपको यकीन है कि अगर हमें अनुमति, या रास्ता या ऐसा कुछ बदलना है?
कोडवेल्ले

@ कोडवेल्ली, जैसा कि मैंने उल्लेख किया है, यह विधि SysV init के लिए है। सेवा या अन्य कमांड का उपयोग करने के लिए आपको अपस्टार्ट की नौकरी लिखनी होगी। लेकिन अगर आप ऐसा करने जा रहे हैं, तो आपको एक सिस्टमड एक (क्योंकि यह मानक बन रहा है) लिखना चाहिए
मार्कोस रोरिज़ जूनियर

6

हाँ! हो सकता है। :) उपस्टार्ट यह सुनिश्चित करने का तरीका है कि सेवा चालू रहे। इसमें पाँच पैकेज हैं, सभी डिफ़ॉल्ट रूप से स्थापित हैं:

  • Upstart init डेमॉन और initctl उपयोगिता
  • upstart-logd logd सेवा के लिए logd डेमॉन और जॉब डेफिनिशन फ़ाइल प्रदान करता है
  • अपस्टार्ट-कॉम्पिटिटर-sysv आर सी टास्क के लिए जॉब डेफिनिशन फाइल्स और रिबूट, रनलेवल, शटडाउन और टेलिनिट टूल्स प्रदान करता है जो SysVinit के साथ अनुकूलता प्रदान करते हैं।
  • स्टार्टअप-कार्य सिस्टम स्टार्टअप कार्यों के लिए नौकरी की परिभाषा फ़ाइलें प्रदान करता है
  • सिस्टम-सेवाएं ट्टी सेवाओं के लिए नौकरी की परिभाषा फाइलें प्रदान करती हैं

सीखना बहुत सुखद है और इसके लायक है। उपस्टार्ट की एक वेबसाइट है: http://upstart.ubuntu.com/


अपस्टार्ट वेबसाइट से, २०१ ९ के अनुसार: "परियोजना केवल अनुरक्षण मोड में है। कोई नई सुविधाएँ विकसित नहीं की जा रही हैं और सामान्य सलाह एक अन्य न्यूनतम इनिट सिस्टम या सिस्टमड में जाने के लिए होगी"
नव

2

3 त्वरित सुझाव ...

  1. एक बनाएं एस में तीखा स्क्रिप्ट /etc/rc3.dइसी के साथ (बहुउपयोगकर्ता कंसोल मोड) कश्मीर में बीमार स्क्रिप्ट /etc/rc.0और /etc/rc6.dएक नियंत्रित तरीके से अपने जावा प्रोग्राम को मारने के लिए जब नीचे प्रणाली शक्तियों (runevel 0) या रीबूट (रनलेवल 6) देखें रनलेबल के लिए एक परिचय

    आप रनलेवल 2 (rc2.d) में अपना जावा ऐप शुरू करने में सक्षम हो सकते हैं, लेकिन, क्रॉलर के रूप में, इसे टीसीपी / आईपी की आवश्यकता होगी। इसलिए सुनिश्चित करें कि आपकी नेटवर्किंग सेवा आपके रनवेवेल 2 में पहले से उपलब्ध / शुरू है। रनरवेल 3 में नेटवर्किंग निश्चित रूप से है।

    /etc/init.dसभी वास्तविक शुरुआत / मार स्क्रिप्ट शामिल हैं। /etc/rcN.dनिर्देशिकाओं में केवल उनके लिंक होते हैं, जो S या K के साथ उपसर्ग करते हैं और उन्हें क्रमशः रनलेवल एन के अनुसार शुरू करने या मारने के लिए।

  2. crondलॉगआउट के बीच चलने वाली प्रक्रिया होनी चाहिए। हो सकता है कि इसे अपने कॉन्टैब में शामिल करें।

  3. साथ चलने वाली एक प्रक्रिया nohupभी बनी रहनी चाहिए। Nohup देखें : लॉगआउट करने के बाद भी एक कमांड चलाएँ

    $ nohup java -jar myapp.jar &

    डिफ़ॉल्ट रूप से, myapp.jarमानक आउटपुट नाम की फ़ाइल में जाएगा ./nohup.out, या $HOME/nohup.outयदि पूर्व में लेखन योग्य नहीं है।


और जब मैं लॉगआउट करता हूं, तो क्या यह अभी भी पृष्ठभूमि पर चलेगा?
रैनझीलबर

0

इसके साथ ही अवगत कराते समय भी जागरूक रहें:

  update-rc.d myscript defaults 

अनुमतियाँ 0755 है और अपने .sh पथ से पहले उपयोग या प्राप्त करने के लिए। मान लीजिए कि आपकी स्क्रिप्ट /root/test.sh पर है, आपको /root/एक्सेस करने से पहले सीडी में पहली बार बदलाव करना चाहिए test.sh

तो सबसे अच्छा तरीका है कि आप init.d पर SH बना लें shऔर अपने रास्ते को बदल दें और इसे स्टार्ट फंक्शन में निष्पादित करें ।



0

उपयोग करने का सबसे आसान तरीका है supervisord। कृपया पूरा विवरण देखें http://supervisord.org/

आप यहाँ और अधिक विवरण देख सकते हैं:

सिस्टम शुरू होने पर एक निष्पादन योग्य जार फ़ाइल चलाना

https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps

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