কীভাবে একটি জার ফাইলটি প্রারম্ভকালে চালানো যায় এবং এবং আপনি যখন লগ আউট করেন?


30

কোথায় সন্ধান শুরু করবেন তা আমার কোনও ধারণা নেই। আমি ডিমনস সম্পর্কে পড়ছি এবং ধারণাটি বুঝতে পারি নি।

আরো বিস্তারিত :

  • আমি এমন একটি ক্রলার লিখছি যা আরএসএসের মাধ্যমে ইন্টারনেটে কখনই থামে না এবং হামাগুড়ি দেয়।
  • ক্রলারটি জাভাতে লেখা হয়েছে - সুতরাং এটি এখনই একটি পাত্রে।
  • আমি এমন একটি মেশিনের প্রশাসক যা উবুন্টু ১১.০৪ রয়েছে।
  • মেশিনটি ক্রাশ হওয়ার কিছু সম্ভাবনা রয়েছে, তাই আমি প্রতিবার মেশিনটি স্টার্টআপ করার সময় ক্রলারটি চালানো চাই।
  • তদতিরিক্ত, আমি লগ আউট করার পরেও এটি চালিয়ে যেতে চাই keep আমি নিশ্চিত যে এটি সম্ভব, তবে বেশিরভাগ সময় আমি লগ আউট হয়েছি এবং আমি এখনও এটি ক্রল করতে চাই।

কোন ধারনা? কেউ আমাকে সঠিক পথ নির্দেশ করতে পারবেন?

স্রেফ সহজ সমাধান খুঁজছি।

উত্তর:


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 

পিএস: আমি জানি যে উপস্টার্ট দুর্দান্ত এবং ব্লে ব্লে, তবে আমি পুরাতন এসএসভি থিম সিস্টেমটি উপস্থাপন করছি।


1
কিন্তু সিস্টেম কীভাবে জানবে যে প্যারামিটারটি কী ব্যবহার করবে? কীভাবে "শুরু" হিসাবে সেট করবেন। এখানে চেষ্টা করেও কাজ হয়নি।
জন জন পিচলার

1
এটি কাজ করে তবে কমান্ডটি "পরিষেবা মাইপ অ্যাপ্লিকেশন" প্রস্থান করে না।
টোবিয়া

এখন কীভাবে শুরু করুন | স্টপ | ম্যাসক্রিপ্টে পুনরায় চালু করার বিকল্পগুলি?
কোডভেলি

এছাড়াও, 3 টি পদক্ষেপটি করার পরেও আমার জার স্টার্টআপে চলছে না। আপনি কি নিশ্চিত যে আমাদের অনুমতি, বা পথ বা এরকম কিছু পরিবর্তন করতে হবে?
কোডভলি

@ কোডডলে, যেমনটি আমি উল্লেখ করেছি, এই পদ্ধতিটি এসআইএসভি ইনডির জন্য। পরিষেবা বা অন্যান্য কমান্ড ব্যবহার করতে আপনাকে একটি আপস্টার্ট কাজ লিখতে হবে। তবে আপনি যদি এটি করতে যাচ্ছেন তবে আপনার সিস্টেমেড লেখা উচিত (যেহেতু এটি স্ট্যান্ডার্ড হয়ে উঠছে)
মার্কোস ররিজ জুনিয়র

6

হ্যাঁ! এটা সম্ভব. :) পরিষেবাটি চলমান থাকবে তা নিশ্চিত করার জন্য আপস্টার্টটি যাওয়ার উপায়। এটিতে পাঁচটি প্যাকেজ রয়েছে, সবগুলি ডিফল্টরূপে ইনস্টল করা হয়েছে:

  • Upstart init ডিমন এবং initctl ইউটিলিটি
  • আপস্টার্ট-লগড লগড সার্ভিসের জন্য লগড ডিমন এবং কাজের সংজ্ঞা ফাইল সরবরাহ করে
  • upstart-compat-sysv আরসি টাস্কগুলির জন্য কাজের সংজ্ঞা ফাইল এবং রিবুট, রানলেভেল, শাটডাউন, এবং টেলিনিট সরঞ্জামগুলি সরবরাহ করে যা SysVinit এর সাথে সামঞ্জস্যতা সরবরাহ করে
  • স্টার্টআপ-টাস্ক সিস্টেম স্টার্টআপ টাস্কগুলির জন্য কাজের সংজ্ঞা ফাইল সরবরাহ করে
  • সিস্টেম-পরিষেবাগুলি tty পরিষেবাদির জন্য কাজের সংজ্ঞা ফাইল সরবরাহ করে

লার্নিংটি খুব উপভোগযোগ্য এবং এটির পক্ষে ভাল। আপস্টার্টের একটি ওয়েবসাইট রয়েছে: http://upstart.ubuntu.com/


২০১২ সালের হিসাবে আপস্টার্ট ওয়েবসাইট থেকে: "প্রকল্পটি কেবল রক্ষণাবেক্ষণের মোডে রয়েছে No কোনও নতুন বৈশিষ্ট্য বিকাশ করা হচ্ছে না এবং সাধারণ পরামর্শটি হ'ল অন্য একটি ন্যূনতম ইনিম সিস্টেম বা সিস্টেমডে চলে যাওয়ার"
ন্যাভ

2

3 দ্রুত পরামর্শ ...

  1. একটি তৈরি করুন এস এ টার্ট স্ক্রিপ্ট /etc/rc3.dসংশ্লিষ্ট সঙ্গে (multiuser কনসোল মোড) কে অসুস্থ স্ক্রিপ্ট /etc/rc.0এবং /etc/rc6.dএকটি নিয়ন্ত্রিত উপায়ে আপনার জাভা প্রোগ্রাম হত্যা করতে যখন সিস্টেম ক্ষমতা (runevel 0) অথবা পুনরায় বুট (রান-লেভেল 6) দেখুন রান-লেভেল একটি উপস্থাপনা

    আপনি আপনার জাভা অ্যাপ্লিকেশনটি রানলেভেল 2 (আরসি 2.ডি) এ শুরু করতে সক্ষম হতে পারেন তবে ক্রলার হিসাবে এটির জন্য টিসিপি / আইপি লাগবে। সুতরাং নিশ্চিত হয়ে নিন যে আপনার নেটওয়ার্কিং পরিষেবাটি আগে থেকেই আপনার রানলেভেলে উপলব্ধ / শুরু হয়েছে। নেটওয়ার্কিং অবশ্যই রানলেভেল 3 এ রয়েছে।

    /etc/init.dসমস্ত বাস্তব শুরু / হত্যা স্ক্রিপ্ট রয়েছে। /etc/rcN.dডিরেক্টরিগুলি কেবল তাদের সাথে লিংক ধারণ করে, যথাক্রমে এস বা কে-এর সাথে উপস্থাপিত করে যথাক্রমে শুরু করতে বা হত্যা করতে, রানলেভেল এন প্রতি।

  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করা এবং এটি সূচনা কার্যক্রমে কার্যকর করা।



0

সবচেয়ে সহজ উপায় হ'ল ব্যবহার করা supervisordHttp://supervisord.org/ এ সম্পূর্ণ বিবরণ দেখুন

আপনি আরও বিশদ এখানে দেখতে পারেন:

সিস্টেম শুরু হওয়ার সাথে সাথে এক্সিকিউটেবল জার ফাইল চালানো

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.