বুট করার সময় আমি কীভাবে /etc/init.d এ স্ক্রিপ্ট তৈরি করতে পারি?


83

আমি মনে করি আমি এই সম্পর্কে কিছুক্ষণ আগে পড়েছি, তবে কীভাবে এটি হয়েছে তা মনে করতে পারছি না। মূলত, আমার একটি পরিষেবা রয়েছে /etc/init.dযাতে আমি বুট করার সময় স্বয়ংক্রিয়ভাবে শুরু করতে চাই। আমার মনে আছে /etc/rc.dডিরেক্টরিতে স্ক্রিপ্টটি সিমিলিং করার সাথে এর কিছু করার আছে তবে আমি বর্তমানে এটি মনে করতে পারি না। এর জন্য হুকুম কী?

আমি বিশ্বাস করি আমি ফেডোরা / সেন্টোস ডেরিভেটিভে আছি।


এটি আপনার ওএসের উপর নির্ভর করে। আপনি কোন ইউনিক্স রূপটি চালাচ্ছেন, এবং লিনাক্স, কোন বিতরণ? কোনটি মধ্যে /etc/init, /etc/init.d, /etc/rc.d, /etc/rc.localএবং আরো কয়েকটি নাম আছে?
গিলস

1
আমি মনে করি আমি সেন্টোস বা এটির মতো কিছুতে আছি। উত্তর কি দেবিয়ানের পক্ষে আলাদা হবে? আমি ডেবিয়ানের জন্যও একটি সমাধানে আগ্রহী।
নাফতুলি কে

উত্তর:


109

আপনি উল্লিখিত হিসাবে যদি আপনি একটি রেড হ্যাট ভিত্তিক সিস্টেমে থাকেন তবে আপনি নিম্নলিখিতগুলি করতে পারেন:

  1. এতে একটি স্ক্রিপ্ট তৈরি করুন এবং স্থাপন করুন /etc/init.d(যেমন /etc/init.d/myscript)। স্ক্রিপ্টের নিম্নলিখিত ফর্ম্যাটটি থাকা উচিত:
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    # code to start app comes here 
    # example: daemon program_name &
}

stop() {
    # code to stop app comes here 
    # example: killproc program_name
}

case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0 

ফর্ম্যাটটি বেশ স্ট্যান্ডার্ড এবং আপনি বিদ্যমান স্ক্রিপ্টগুলিতে দেখতে পারেন /etc/init.d। এরপরে আপনি স্ক্রিপ্টটি এর মতো /etc/init.d/myscript startবা ব্যবহার করতে পারেন chkconfig myscript startckconfigMan পৃষ্ঠা স্ক্রিপ্ট হেডার ব্যাখ্যা করেছেন:

 > This says that the script should be started in levels 2,  3,  4, and
 > 5, that its start priority should be 20, and that its stop priority
 > should be 80.

উদাহরণস্বরূপ স্টার্ট এবং স্টপ কোডটি সংজ্ঞায়িত সহায়ক ফাংশন ব্যবহার করে /etc/init.d/functions

  1. স্ক্রিপ্ট সক্ষম করুন

    $ chkconfig --add myscript 
    $ chkconfig --level 2345 myscript on 
    
  2. স্ক্রিপ্টটি সত্যই সক্ষম হয়েছে তা পরীক্ষা করুন - আপনার নির্বাচিত স্তরগুলির জন্য আপনার "চালু" হওয়া উচিত।

    $ chkconfig --list | grep myscript
    

3
Chkconfig আপনি চান কি। +1
হোয়ামি

কেন উদ্যোগ রানুলিভেল 2, 3, 4 এবং 5 এ কিছু শুরু করেছে? রানলেভেল 2 এ সার্ভার শুরু করা এড়াতে আপনার কি যত্ন নিতে হবে না? এবং রানলেভেল 4 কোনওভাবেই আরএইচএল-তে সংজ্ঞায়িত করা হয়নি, তবে কেন run রানলেভেলে এটি শুরু করার চেষ্টা করবেন? সমালোচনা নয়, শুধু জানতে চাইছেন। আমি দেশীয় স্ল্যাকওয়্যার ব্যবহারকারী।
ব্রুস এডিগার

4 আরএইচইএলে সংজ্ঞায়িত করা হয়নি, তবে এটি বিদ্যমান। আপনি নিজের জিনিসগুলির জন্য এটি চুরি করতে পারেন।
কেভিন এম

শিরোনামটি chkconfig ম্যান পৃষ্ঠা থেকে নেওয়া হয়েছে। আমি ব্যক্তিগতভাবে বেশিরভাগ ক্ষেত্রে 235 বা কেবল 35 দিয়ে আছি।
ক্যানেন

প্রারম্ভকালে কোনও কিছু শুরু করতে ব্যর্থ হলে আমি কী লগটি দেখতে পারি?
উত্কর্ষ সিনহা

10

আপনি পরীক্ষা করেন, আপনার মেশিনটি সাধারণত রানলেভেল থেকে শুরু হয়।

runlevel

প্রায়শই এটি 5 বা 2 - বিভিন্ন কনভেনশন রয়েছে, তবে বাস্তবে কিছুই প্রতিষ্ঠিত হয়নি, আফাইক। উবুন্টু 2 ব্যবহার করে, যখন প্রাক্তন বিতরণ আমি সর্বদা ব্যবহার করি

  • 1 একক ব্যবহারকারী (সুপার ব্যবহারকারী)
  • 2 বহু ব্যবহারকারী
  • 3 মাল্টি ইউজার + নেটওয়ার্ক
  • 4 ব্যবহারকারীর / ব্যবহারকারী নিশ্চিত নয়
  • 5 টি বহু ব্যবহারকারী, নেটওয়ার্ক + এক্স 11

তারপর আপনি আপনার Init-স্ক্রিপ্ট থেকে একটি সিমবলিক লিঙ্ক করা, হয়তো /etc/init.d/foobarকরতে/etc/rc2.d/SXYfoobar

এস এর অর্থ 'এই স্ক্রিপ্টটি এই রানলেভেলে শুরু করুন (এখানে: 2)। এক্সওয়াই একটি দুই-অঙ্কের দশমিক সংখ্যা, যা ক্রমটির জন্য প্রাসঙ্গিক, স্ক্রিপ্টগুলি শুরু হয়।

আপনি যদি স্ক্রিপ্ট S45barfoo আপনার আগে চালনার জন্য নির্ভর করেন এবং S55foofoo আপনার স্ক্রিপ্টের উপর নির্ভর করে আপনি 45 এবং 55 এর মধ্যে xy বেছে নেবেন equal সমান সংখ্যার জন্য বুট অর্ডার অপরিজ্ঞাত।

উবুন্টু এরই মধ্যে অন্য স্টার্টআপ পদ্ধতিতে স্যুইচড (সুইচিং) করছে, যার নাম upstart

এবং দ্রষ্টব্য: লিঙ্কগুলি সর্বদা এর সাথে লিঙ্ক হয় না /etc/rcX.d- কখনও কখনও এটি হয় /etc/init/rcX.dবা অনুরূপ কিছু হয় তবে এটি কোথাও / ইত্যাদি নীচে খুঁজে পাওয়া সহজ হওয়া উচিত।

আপনি যদি প্রারম্ভিক স্ক্রিপ্টগুলির শেষে কিছু শুরু করতে চান /etc/rc.localতবে এটি ফাইলের জন্য সন্ধান করা হবে, তবে এটি যদি ইতিমধ্যে চলমান X11 এর উপর নির্ভর করে তবে আপনি সম্ভবত আপনার ডেস্কটপ পরিবেশের একটি অটোস্টার্ট-বিকল্পের জন্য অনুসন্ধান করতে পারেন, বা /etc/X11/Xsession.d/বর্ণিত অনুরূপ প্যাটার্ন সহ look উপরে।

আপনি যদি নেটওয়ার্কটি আপ হয়ে যাওয়ার উপর নির্ভর করেন তবে একটি পৃথক ডিরেক্টরি (যদি-আপ.ডি) থাকে এবং বাহ্যিক ইউএসবি-ড্রাইভের মতো মাউন্টযুক্ত ডিভাইসের জন্য /etc/udev/rules.d/


এমন কোনও আদেশ নেই যা আপনার জন্য সিলেকিং করছে? আমি ভেবেছিলাম এমন কিছু মনে আছে।
নাফটুলি কে

1
তাই না update-rc.d?
নাফটুলি কে

জিইউআই বা কমান্ডলাইন? আপনার ডিই রানলেভেলগুলি চিহ্নিত করার জন্য একটি সরঞ্জাম সরবরাহ করতে পারে, যেখানে আপনার স্ক্রিপ্টটি শুরু করতে বা বন্ধ করতে হবে। আমি এরকম কিছু দেখেছি, তবে কোনও নাম মনে নেই এবং কীভাবে নম্বরটি নির্দিষ্ট করবেন (xy)।
ব্যবহারকারী অজানা

কমান্ড। এটি আপনার জন্য সিমলিংক পরিচালনা করে এবং নির্দিষ্ট স্ক্রিপ্টগুলি চালিত হয় বা না সে সম্পর্কে আপনাকে সুইচগুলি ফ্লিপ করতে দেয়।
নাফটুলি কে

3

যেমন নাফতুলি তজভি কেয়ে উপরের দেবিয়ান সম্পর্কে জিজ্ঞাসা করেছিলেন: দেবিয়ান 6 দিয়ে শুরু করে, আপনার স্ক্রিপ্টে একটি এলএসবি (লিনাক্স স্ট্যান্ডার্ডস বেস) শিরোনাম থাকা উচিত যা এর নির্ভরতা এবং ক্ষমতাগুলি নির্দেশ করে ( ডিবিয়ান উইকি পৃষ্ঠাটি দেখুন )।

যদি কোনও এলএসবি শিরোনাম উপস্থিত থাকে তবে আপনি insservনিজের স্ক্রিপ্টটি বুট প্রক্রিয়াতে অন্তর্ভুক্ত করতে ব্যবহার করতে পারেন ( অন্য একটি ডেবিয়ান উইকি পৃষ্ঠা দেখুন )।

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