'শুরু হচ্ছে ... [ঠিক আছে]' প্রদর্শনের জন্য কীভাবে দায়ী?


1

যখন আমি একটি সেবা শুরু করি যেমন:

root@foo [~]# service foobar stop
Stopping Foobar:                                       [  OK  ]

আমি একটি স্থিতি নির্দেশক দেখতে পারেন: [ OK ] যা দৃশ্যমান এক থেকে ভিন্ন /var/log/boot.log:

[  OK  ] Started LSB: disk temperature monitoring daemon.
...

অথবা এমনকি থেকে ভিন্ন:

* /proc is already mounted
* Caching service dependencies ...        [ ok ]

এই তিনটি উদাহরণে কোন প্রক্রিয়াটি ডেমনগুলি প্রদর্শন এবং শুরু করার দায়বদ্ধ? ভিন্নভাবে বলেন, কোন লাইব্রেরি প্রদর্শনের জন্য ব্যবহৃত হয় [ OK ], [FAILED]?

উত্তর:


3

যখন একটি ম্যানুয়াল আহ্বান service /etc/init.d অথবা /etc/rc.d থেকে একটি SysV শৈলী স্ক্রিপ্ট চালায়, সমস্ত স্ট্যাটাস আউটপুট নির্ভর করে সম্পূর্ণরূপে যে স্ক্রিপ্ট।

যথাযথভাবে লিখিত init.d স্ক্রিপ্টগুলি ডিস্ট্রো দ্বারা উপলব্ধ শেল ফাংশনগুলির একটি লাইব্রেরি ব্যবহার করবে। উদাহরণস্বরূপ, ডেবিয়ানতে, বেশিরভাগ স্ক্রিপ্টগুলি ফাইল (উৎস) লোড করবে /lib/lsb/init-functions, এবং সহজভাবে তার মত ফাংশন কল এই:

case "$1" in
  start)
     log_daemon_msg  "$ DESC শুরু হচ্ছে" "$ NAME"
    do_start
    কেস "$?" মধ্যে
        0 | 1)  log_end_msg  0 ;;
        2) log_end_msg 1 ;;
    esac
    ;;
  [...]
esac 

এখানে স্ট্যান্ডার্ড ফাংশন তালিকা LSB দ্বারা সংজ্ঞায়িত। (উল্লেখ্য যে distros প্রদান করতে পারে অতিরিক্ত উপরে উদাহরণ হিসাবে, মান অতিক্রম ফাংশন। এছাড়াও খেয়াল রাখবেন যে যেমন। ওপেনআরসি বা আর্ক লিনাক্স নয় এলএসবি-সামঞ্জস্যপূর্ণ এবং সম্পূর্ণ ভিন্ন শৈলী ব্যবহার করুন।)

আসলে, কিছু distros কেন্দ্রীয়ভাবে এই boilerplate কোড প্রদান করবে, এবং init.d স্ক্রিপ্ট বাকি যে সব বাস্তবায়ন করা হয় do_start। (জেন্টু এর ওপেনআরসি এবং ডেবিয়ান এর দেখুন /lib/init/init-d-script উদাহরণ হিসাবে)। যাইহোক, এটি একটি "আদর্শ" এলএসবি বৈশিষ্ট্য নয় - LSB- সামঞ্জস্যপূর্ণ হওয়ার চেষ্টা করার স্ক্রিপ্টগুলি এখনও এটি নিজে করতে হবে।


বিঃদ্রঃ: আমি 'যথাযথভাবে লিখিত' জোর দিয়েছি কারণ সত্যিই এমন কিছুই নেই বল একটি init.d স্ক্রিপ্ট এই কাজগুলি, মানব তত্ত্বাবধানের ছাড়া অন্যটি ব্যবহার করতে। স্ক্রিপ্ট প্লেইন মাধ্যমে অবস্থা রিপোর্ট করতে চায় echo (অথবা মাধ্যমে cowsay যে বিষয়টি জন্য), এটা সবসময় যে করতে সক্ষম। এটি বিশেষ করে স্বাভাবিক চ্যানেলের বাইরে বিতরিত বাণিজ্যিক সফটওয়্যারগুলির একটি সমস্যা: তাদের স্ট্যাটাস আউটপুট না বেশ সঠিক দেখায় (এবং সত্যি, পুরো init.d স্ক্রিপ্টটি বেশ সঠিকভাবে আচরণ করে না)।


এদিকে, যখন SysV স্ক্রিপ্ট সময় বলা হয় বুট প্রক্রিয়া ফলাফলটি আরও বেশি ডিস্ট্রো-নির্ভরশীল - কখনও কখনও আপনি সরাসরি স্ক্রিপ্টগুলি থেকে আউটপুট দেখতে পাবেন, তবে কখনও কখনও "প্রধান" init সিস্টেমটি শুরু হওয়া সমস্ত পরিষেবাগুলির জন্য এটির নিজস্ব স্ট্যাটাস আউটপুট সরবরাহ করবে। ( উদাহরণ: আর্ক লিনাক্স পুরাতন initscripts, ব্যাকগ্রাউন্ডে একটি সেবা শুরু করার সময়।)

কিন্তু আপনার দ্বিতীয় উদাহরণ আসলে হয় না একটি SysV শৈলী init - এটি systemd (যা আপনার উদাহরণে একটি 'legacy' init.d স্ক্রিপ্ট শুরু হতে পারে)। Systemd একটি সম্পূর্ণ পরিষেবা পরিচালক যা পরিষেবা কনফিগারেশনগুলি (স্ক্রিপ্ট নয়) ব্যবহার করে এবং তাই সব বুট / শাটডাউন অবস্থা আউটপুট systemd নিজেই প্রদান করা হয়। এটি init-ng, SMF, অথবা Upstart সহ অন্যান্য অন্যান্য "পরিষেবা পরিচালকদের" ক্ষেত্রেও প্রযোজ্য।


আমি একটি দ্রুত চেহারা গ্রহণ /lib/lsb/init-functions, কিন্তু যখন আমি চালানোর চেষ্টা করি [ 1 != 2 ] && log_end_msg 1 আমি পেয়েছি ... ... ব্যর্থ! [fail]। আমি একটু বিভ্রান্ত।
nowox

@nowox: আপনি সম্ভবত চান log_failure_msg তারপর। (init.d স্ক্রিপ্টগুলি কোন ফাংশনগুলি ব্যবহার করে সেগুলিতে খুব সামঞ্জস্যপূর্ণ নয়। আমার ডেবিয়ান সাইড সিস্টেমে বিভিন্ন ধরণের শৈলী রয়েছে।)
grawity

1
@nowox: প্রকৃতপক্ষে প্রকৃত LSB স্পেসিফিকেশন নির্দিষ্ট করে log_success_msg এবং log_failure_msg এই উদ্দেশ্যে. (যদিও অবশ্যই অনেক distros ব্যবহৃত -এলএসবি-কনফরম্যান্ট স্ক্রিপ্ট ...)
grawity

0

এটি distro-dependent init স্ক্রিপ্ট থেকে আসে। বিষয়বস্তু চেক করুন service প্রোগ্রাম, এটি সম্ভবত কিছু শেল স্ক্রিপ্ট অন্তর্নিহিত পরিচালনা স্ক্রিপ্টগুলি (SysV এখন অপ্রচলিত বলে মনে করা হয়) বা বাইনারি (systemd হল যাওয়ার উপায়)। এটি systemd pross এক - আপনি "যে নির্ভর করে" উত্তর পাবেন না।


...কারণ systemctl start কোন প্রতিক্রিয়া আউটপুট আছে যাই হোক না কেন।
grawity

... এবং মনে হচ্ছে systemctl উপর নির্ভর করে start-stop-daemon
nowox

না, systemctl স্টার্ট-স্টপ-ডিমনের উপর নির্ভর করে না, যতক্ষণ না আপনি কিছু ব্র্যান্ডিন্ড ডিস্ট্রো ব্যবহার করেন।
Tomasz Pala

1
@ গরু - হ্যাঁ, কোন আউটপুট নেই, যেমন [OK] বার্তাটি মিথ্যা ছাড়া আর কিছুই ছিল না, কারণ এটি শুধুমাত্র প্রথম পর্যায়ে শুরু হওয়ার স্ট্যাটাস, ফিক্সিং এবং ডিনামানাইজেশনের আগে। খুব প্রায়ই একটি deamon যে পরে সেকেন্ড মারা যায়। নির্ভরযোগ্য ছিল যে একমাত্র বার্তা [FAILED], যা কখনও কখনও বোঝানো, যে সেবা ... ইতিমধ্যে চলমান ছিল, কিন্তু service কমান্ড যে জানেন না।
Tomasz Pala

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