/Etc/rc.local এর উদ্দেশ্য এবং সাধারণ ব্যবহার


73

শিরোনামটি দেখতে এমন দেখাচ্ছে:

#!/bin/sh -e
#
# rc.local - executed at the end of each multiuser runlevel
#
# Make sure that the script will "exit 0" on success or any other
# value on error.

এই ফাইলটির কারণ কী (এটিতে খুব বেশি কিছু থাকে না) এবং আপনি সাধারণত এটিতে কোন আদেশ যুক্ত করেন? "মাল্টিউজার রানলেভেল" কী? (আমার ধারণা rc"রান কমান্ড"?)


2
ফাইলটির এটি "অফিসিয়াল" উদ্দেশ্য কিনা তা আমি জানি না, তবে আমি জানতে পেরেছিলাম যে প্রারম্ভকালে কী ঘটতে হবে তার জন্য আমি ফাইলটি ব্যবহার করতে পারি এবং তার জন্য অতি ব্যবহারকারীর অ্যাক্সেসের প্রয়োজন হবে তবে পাসওয়ার্ড সরবরাহ না করেই । এতে সাধারণত রঙ, কীবোর্ড এবং এই জাতীয় অন্যান্য জিনিস অন্তর্ভুক্ত থাকে। এখানে কয়েকটি উদাহরণ দেখুন ।
ইমানুয়েল বার্গ

উত্তর:


66

একটি রানলেভেল সিস্টেমের একটি অবস্থা, এটি বুট করা বা রিবুট করা বা বন্ধ করার প্রক্রিয়াতে বা একক-ব্যবহারকারী মোডে বা সাধারণভাবে চলমান তা নির্দেশ করে। ঐতিহ্যগত Init প্রোগ্রাম সংশ্লিষ্ট রান-লেভেল সুইচিং দ্বারা এই কর্ম পরিচালনা করে। লিনাক্সের অধীনে, রানলেভগুলি কনভেনশন অনুসারে :

  • এস বুট করার সময়,
  • 0 বন্ধ করার সময়,
  • 6 রিবুট করার সময়,
  • 1 একক ব্যবহারকারী মোডে এবং
  • সাধারণ ক্রিয়াকলাপ 2 থেকে 5।

রানলেভেল 2 থেকে 5 পর্যন্ত মাল্টিউজার রানলেভেল হিসাবে পরিচিত কারণ তারা একাধিক ব্যবহারকারীকে লগ-ইন করার অনুমতি দেয়, রানলেভেল 1 এর বিপরীতে যা কেবলমাত্র সিস্টেম প্রশাসকের উদ্দেশ্যে করা হয়।

রানলেভেল পরিবর্তিত হলে, init আরসি স্ক্রিপ্টগুলি চালায় (প্রথাগত init সহ সিস্টেমে - বিকল্প রয়েছে যেমন আপস্টার্ট এবং সিস্টেমড )। এই আরসি স্ক্রিপ্টগুলি সাধারণত সিস্টেম পরিষেবাগুলি শুরু করে এবং বন্ধ করে দেয় এবং বিতরণ সরবরাহ করে।

স্ক্রিপ্টটি /etc/rc.localসিস্টেম প্রশাসক দ্বারা ব্যবহারের জন্য by মাল্টিউজার রানলেভেলে স্যুইচ করার প্রক্রিয়া শেষে সমস্ত স্বাভাবিক সিস্টেম পরিষেবা শুরু হওয়ার পরে এটি traditionতিহ্যগতভাবে কার্যকর করা হয়। আপনি এটি একটি কাস্টম পরিষেবা শুরু করতে ব্যবহার করতে পারেন, উদাহরণস্বরূপ যে ইনস্টল করা সার্ভারটি /usr/local। বেশিরভাগ প্রতিষ্ঠানের প্রয়োজন হয় না /etc/rc.local, এটি সংখ্যালঘু ক্ষেত্রে যেখানে এটি প্রয়োজন সেখানে সরবরাহ করা হয়।


2
আমি আজ জানতে পেরেছি যে বর্তমান ফ্রিবিএসডি-তে, rc.local বেশ তাড়াতাড়ি মৃত্যুদন্ড কার্যকর করতে পারে। অবশ্যই সমস্ত সাধারণ সিস্টেম পরিষেবা শুরু হওয়ার পরে নয়। যখন হেডলেস মেশিনে sshd অ্যাক্সেস পাওয়া যায় তখন আমি একটি বীপ চাইতাম এবং rc.localএই কারণে উপযুক্ত ছিল না। যেহেতু মূল প্রশ্নটি দেবিয়ান সম্পর্কে, তাই এই মন্তব্যটি সম্ভবত ওপি-র ক্ষেত্রে অপ্রাসঙ্গিক।
এমভিজি 0

1
@ এমভিজি তথ্যের জন্য ধন্যবাদ। rc.localtraditionতিহ্যগতভাবে গতটি চালানো হয়েছিল, তবে আমি দেখতে পাচ্ছি যে তারা নির্ভরতা ভিত্তিক সিস্টেমে স্যুইচ করলে ফ্রিবিএসডি তা বন্ধ করে দেয়। আপনি মনে রাখবেন, এমনকি যদি অনুরোধ করা rc.localহয়েছিল /etc/rc.d/sshd, তবে এটি পুরোপুরি কার্যকর হবে না: প্রক্রিয়া শুরু rc.localহওয়ার সাথে সাথেই অনুরোধ করা sshdহবে, sshdনেটওয়ার্কটি শুনতে শুরু করার আগে এটি আহ্বান করা যেতে পারে (তবে আমরা এখানে এক সেকেন্ডের দশম দশকে কথা বলব বেশিরভাগ সাধারণ সেটআপে)।
গিলস

আমি lxc ধারকগুলির জন্য নেটওয়ার্ক সেট আপ করতে এবং সেগুলি স্বয়ংক্রিয়ভাবে চালু করার জন্য এটি ব্যবহার করার চেষ্টা করছি। কিন্তু এটি পরে থামে iptables-apply /root/iptables। আমি কী ভুল হয়েছে তা জানার প্রক্রিয়ায় রয়েছি (পরবর্তী রিবুটের জন্য অপেক্ষা করছি)। তবে আপনার যদি কোনও পরামর্শ পাওয়া যায় তবে আমি সব কানেই আছি।
এক্স-ইউরি

1
@ x-yuri এর জন্য আপনি এখানে যে পোস্ট করেছেন তার চেয়ে আরও বেশি তথ্য প্রয়োজন। এমনকি "এটি বন্ধ হয়ে যায়" এর মধ্যে "এটি" কী তা আমি জানি না। একটি নতুন প্রশ্ন জিজ্ঞাসা করুন যা আপনাকে কী করেছে তা ব্যাখ্যা করে।
গিলস

14

rc "রান-নিয়ন্ত্রণ" বোঝায়,

multiuserরান-লেভেল স্তর যা নেটওয়ার্কিং উপলব্ধ এবং এইভাবে সার্ভারে সংযোগ হার্ড-ওয়্যার্ড কনসোল সংযোগ পরিবর্তে সেই পরিষেবাগুলি ব্যবহার করা যেতে পারে হিসাবে সংজ্ঞায়িত করা হবে।

মনে মনে, সার্ভারগুলি সাধারণত কোনও সার্ভিস প্রসেসর দ্বারা পরিচালিত হয় (বিভিন্ন নামে) যা নেটওয়ার্ক সংযোগগুলিকে সমর্থন করে এবং ফলস্বরূপ এমন আচরণ করে যেমন আপনার সত্যিকারের একটি হার্ড-ওয়্যার্ড কনসোল রয়েছে।

rc.localফাইল হিসাবে , এটি আপনার কাছে যে সমস্ত "স্থানীয়" (সাইট-নির্দিষ্ট) অবজেক্ট (ডেমোনস এবং / অথবা একবার-বুট স্ক্রিপ্টগুলি) শুরু করতে চান তা নির্দিষ্ট করার অনুমতি দেওয়ার জন্য এটি একটি সুবিধা। আপনি এই দৃষ্টান্তটি ব্যবহার করতে বা যথাযথভাবে স্টার্ট / স্টপ স্ক্রিপ্টগুলির সাহায্যে '/etc/init.d' উপস্থাপন করতে পারেন।


1
ঠিক আছে, তবে ফাইলটি কেন সেখানে রয়েছে এবং আপনি সাধারণত এটি কখন ব্যবহার করেন এবং কীভাবে (উদাহরণস্বরূপ, কোন আদেশগুলি এতে যুক্তি দেয়)?
ইমানুয়েল বার্গ

4

আমি এটি প্রধানত দুটি জিনিসের জন্য ব্যবহার করি:

  1. প্রতিটি রিবুটের তারিখ এবং কার্নেল সংস্করণ লগ করতে। একটি সাধারণ ওয়ান-লাইনার যা সহজেই কোনও প্রকারের স্টাফ ছাড়াই সিস্টেমে যুক্ত করা যায় ... এবং চালনার চেয়ে বুট ইতিহাসের দূষিত হওয়ার ঝুঁকি কম uptimed

  2. পুরানো /etc/rc.boot/ ডিরেক্টরি যা কয়েক বছর আগে অবধি ডেবিয়ান আপ হতে ব্যবহৃত হয়েছিল পুনরুদ্ধার করতে। আমার কাছে এখনও কিছু সরল স্ক্রিপ্ট রয়েছে যেগুলি একটি init.d স্ক্রিপ্ট হিসাবে পুনর্লিখনের প্রচেষ্টার পক্ষে মূল্যহীন নয় (উদাহরণস্বরূপ ডেসমেজকে মূলকে মেইল ​​করার জন্য একটি প্রশ্নোত্তর স্ক্রিপ্ট, এবং অন্যটি পড়ার- সেট করার জন্য নিষ্ক্রিয় স্পিনডাউন এবং ব্লকদেব অক্ষম করতে এইচডিপর্ম ব্যবহার করতে পারে) সামনের আকার) এবং অন্য বুট-টাইম স্ক্রিপ্টগুলির পরে চালানোর জন্য আমি খুশি।

যেমন

echo "$(date +%s),$(date),$(uname -a)"  >> /var/log/reboot.log

[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

এছাড়াও, আমি সেন্টোস এবং ডেবিয়ান ডিস্ট্রোসের জন্য ওপেনস্ট্যাক (অন http://169.254.169.254/) থেকে ই 2 2-স্টাইলের মেটাডেটা পাওয়ার জন্য এই বছরের শুরুতে /etc/rc.local স্ক্রিপ্টগুলি লিখেছিলাম যাতে ভিএমরা তাদের আইপি, হোস্টনাম, এসএসএস কী এবং অন্যান্য উদাহরণ-নির্দিষ্ট তথ্য পেতে পারে । ক্লাউড-আরআনেকে এই ডিস্ট্রোগুলিতে পোর্ট করা হয়েছে, সুতরাং স্ক্রিপ্টগুলি এখন অপ্রচলিত।


3

rc.localফাইল ডেবিয়ান বেশিরভাগই অ Init শৈলী সিস্টেমের সাথে সামঞ্জস্যের জন্য নয়। আপনার এটি ব্যবহার করা উচিত নয়।

পরিবর্তে, /etc/init.d/Skeletonরানলেভেলগুলি পরিবর্তন করার সময় আপনি যা কিছু করতে চান তার জন্য একটি নতুন init স্ক্রিপ্টে অনুলিপি করার পরামর্শ দেওয়া হচ্ছে , তারপরে inservএটি সক্ষম করতে ব্যবহার করুন ।


আপডেট: নীচের মন্তব্য অনুসারে, এই উত্তরটির আর কোনও প্রস্তাব দেওয়া হয় না। যাইহোক, এই উত্তরটি কঙ্কালের অবক্ষয়ের বেশ কয়েক বছর আগে পোস্ট করা হয়েছিল , এবং সেই কঙ্কালটি এখনও জানুয়ারী 2019 পর্যন্ত দেবিয়ান অস্থির মধ্যে রয়েছে


unix.stackexchange.com/a/480897/5132 /etc/init.d/skeleton উপায় নয়।
জেডিবিপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.