সিস্টেমে, পরে = এবং প্রয়োজনীয়তা = এর মধ্যে পার্থক্য কী?


53

আমি একটি সিস্টেমেড। সার্ভিস ফাইল তৈরি করছি এবং আমার মধ্যে Requires=এবং এর মধ্যে পার্থক্য বুঝতে সহায়তা দরকার After=Man পৃষ্ঠা বলছেন যে Requires="অন্যান্য ইউনিটে প্রয়োজন নির্ভরতা কনফিগার করে।" এবং After="ইউনিটগুলির মধ্যে অর্ডিং নির্ভরতাগুলি কনফিগার করে।" পার্থক্য কি?

উত্তর:


43

After=পরিষেবা অর্ডার কনফিগার করে (কেবল Y এর পরে এক্স করুন), যখন Requires=রাষ্ট্র নির্ভরতা। আপনি যদি অর্ডার নির্দিষ্ট না করে থাকেন তবে অন্যের উপর নির্ভর করে একটি পরিষেবা একই সাথে শুরু করা হবে যার উপর নির্ভর করে। এছাড়াও, আমি যেভাবে এটি বুঝতে পারি (যদিও আমি এখন এটি পরীক্ষা করতে পারি না এবং কোনও রেফারেন্স খুঁজে পাই না) After=এটি একটি "আলগা দম্পতি" এবং After=লাইনটিতে নাম লেখা না থাকলে এই জাতীয় বিবৃতি সহ একটি পরিষেবা এখনও চলবে if Require=এটি মোটেও শুরু করা হয়নি, যদিও প্রয়োজনটি পূরণ না করা হলে এটি শুরু করা আটকাবে।

Https://www.freedesktop.org/software/systemd/man/systemd.unit.html উদ্ধৃত :

= প্রয়োজন

অন্যান্য ইউনিটের উপর প্রয়োজনীয়তা নির্ভরতা কনফিগার করে। যদি এই ইউনিটটি সক্রিয় হয়, তবে এখানে তালিকাবদ্ধ ইউনিটগুলিও সক্রিয় হবে। যদি অন্য ইউনিটের একটি নিষ্ক্রিয় হয়ে যায় বা এর সক্রিয়করণ ব্যর্থ হয় তবে এই ইউনিটটি নিষ্ক্রিয় করা হবে। এই বিকল্পটি একাধিকবার নির্দিষ্ট করা যেতে পারে বা একাধিক স্পেস-বিচ্ছিন্ন ইউনিট একটি বিকল্পে নির্দিষ্ট করা যেতে পারে যেখানে সমস্ত তালিকাভুক্ত নামের জন্য প্রয়োজনীয়তা নির্ভরতা তৈরি হবে। নোট করুন যে প্রয়োজনীয়তা নির্ভরতাগুলি পরিষেবাগুলি শুরু বা বন্ধ হওয়া ক্রমে কোনও প্রভাব ফেলবে না। এটি = পরে বা = আগে বিকল্পগুলির সাথে স্বাধীনভাবে কনফিগার করতে হবে। যদি কোন ইউনিট foo.service এর জন্য প্রয়োজনীয় ইউনিট = এর সাথে কনফিগার করা ইউনিট বার.সেবারিসের প্রয়োজন হয় এবং = বা তার আগে = এর সাথে কোনও অর্ডিং কনফিগার করা না থাকে, তবে foo.service সক্রিয় থাকলে উভয় ইউনিট একযোগে এবং তাদের মধ্যে কোনও বিলম্ব ছাড়াই শুরু করা হবে। প্রায়শই,

এবং

আগে =, পরে =

ইউনিটের নামের একটি স্থান দ্বারা পৃথক করা তালিকা। ইউনিটগুলির মধ্যে অর্ডিং নির্ভরতা কনফিগার করে। যদি কোনও ইউনিট foo.service এ একটি সেটিং থাকে = আগে = বার.সার্ভিস এবং উভয় ইউনিট শুরু করা হচ্ছে, foo.service শুরু না হওয়া পর্যন্ত বার.সার্ভিস এর স্টার্ট আপটি বিলম্বিত হয়। নোট করুন যে এই সেটিংটি প্রয়োজনীয়তা = দ্বারা কনফিগার করা হিসাবে প্রয়োজনীয়তা নির্ভরতাগুলির থেকে স্বতন্ত্র এবং অরথোগোনাল। পরে = এবং প্রয়োজনীয়গুলি = বিকল্প উভয়টিতে এককের নাম অন্তর্ভুক্ত করা একটি সাধারণ প্যাটার্ন, এই ক্ষেত্রে তালিকাবদ্ধ ইউনিট এই বিকল্পগুলির সাথে কনফিগার করা ইউনিটের আগে শুরু করা হবে। এই বিকল্পটি একাধিকবার নির্দিষ্ট করা যেতে পারে, সেক্ষেত্রে সমস্ত তালিকাভুক্ত নামের জন্য অর্ডিং নির্ভরতা তৈরি করা হয়। এর পরে = হ'ল বিগত = এর বিপরীত, অর্থাত্‍ যখন = নিশ্চিত করে যে কনফিগার করা ইউনিট সূচিত ইউনিট শুরু হওয়ার পরে শুরু হবে, তার আগে = বিপরীতটি নিশ্চিত করে, অর্থাৎ তালিকাবদ্ধ ইউনিট শুরুর আগে কনফিগার করা ইউনিট পুরোপুরি শুরু হয়ে যায়। মনে রাখবেন যে যখন তাদের মধ্যে অর্ডিং নির্ভরতা সহ দুটি ইউনিট বন্ধ হয়ে যায়, তখন শুরুর আদেশের বিপরীতটি প্রয়োগ করা হয়। উদাহরণস্বরূপ, যদি কোনও ইউনিট আফটার = সাথে অন্য ইউনিটে কনফিগার করা থাকে তবে উভয়টি বন্ধ হয়ে থাকলে পূর্ববর্তীটির পরে দ্বিতীয়টি বন্ধ করা হয়। তাদের মধ্যে যে কোনও অর্ডিং নির্ভরতা সহ দুটি ইউনিট দেওয়া হয়েছে, যদি একটি ইউনিটটি বন্ধ হয়ে যায় এবং অন্যটি শুরু হয়, তবে স্টার্ট-আপের আগে শাটডাউনটি অর্ডার করা হয়। অর্ডিং নির্ভরতা = বা তার আগে = এর পরে থাকলে কিছু যায় আসে না। দুজনের মধ্যে কোনটি বন্ধ হয়ে যায় তা ততক্ষণ গুরুত্বপূর্ণ নয়, যতক্ষণ একজন বন্ধ হয়ে যায় এবং অন্যটি শুরু হয়। সমস্ত ক্ষেত্রে শুরুর আগে শাটডাউন অর্ডার করা হয়। যদি দুটি ইউনিটের মধ্যে অর্ডিং নির্ভরতা না থাকে তবে সেগুলি বন্ধ হয়ে যায় বা একই সাথে শুরু হয়,


7
আদেশের বিবৃতি না হলে নির্ভরতা কী? (গুরুত্ব সহকারে ... আমি পার্থক্যটি বুঝতে পারি না)
টমঅনটাইম

আমার সম্পাদনা দেখুন। আমার বোধগম্যতা: After=X" X সম্পন্ন হলে X এর পরে এটি করুন" এর Require=Xঅর্থ হ'ল, "আপনি যদি এক্স না করতে পারেন তবে একেবারেই এটি করবেন না" এর অর্থ।
সোভেন

Before=মানুষ পৃষ্ঠার অধ্যায় এটি নিশ্চিত বলে মনে হয়। If a unit foo.service contains a setting Before=bar.service and both units are being started, bar.service's start-up is delayed until foo.service is started up আমি যেভাবে বুঝতে পারি, আদেশটি bar.serviceকোনওভাবেই শুরু না করা হলে কার্যকর করা হবে না এবং foo.serviceসাধারণত শুরু হবে।
সোভেন

9

অন্যতম প্রধান পার্থক্য হ'ল

  • After কেবলমাত্র ইউনিট ইতিমধ্যে সক্রিয় আছে কিনা তা পরীক্ষা করে দেখায় এবং নির্দিষ্ট ইউনিটগুলি স্পষ্টভাবে সক্রিয় না করে।
  • তালিকাভুক্ত ইউনিটগুলি Requiresইউনিটের সাথে একত্রিত হয়। প্রয়োজনীয় ইউনিটগুলির মধ্যে কোনওটি শুরু করতে ব্যর্থ হলে, ইউনিটটি সক্রিয় হয় না।

আমার একটি ইউনিট ফাইল আছে তা বিবেচনা করুন test-app.service,

[Unit]
Description=test app
After=network-online.target

এই বিবৃতি কার্যকর করা হলে এখানে কী হবে তা এখানে রয়েছে,

  • Afterচেক যদি network-online.target
  • যদি network-online.targetএটি শুরু না করা হয় তবে এটি অপেক্ষা করবে।
  • test-appnetwork-online.targetসক্রিয় হওয়ার পরেই শুরু হয়

আমার Requiresপরিবর্তে যদি,

[Unit]
Description=test app
Requires=network-online.target

এই বিবৃতি কার্যকর করা হলে এখানে কী হবে তা এখানে রয়েছে,

  • network-online.targetএবং test-appএকসাথে সক্রিয় করা হয়
  • যদি network-online.targetশুরু করতে ব্যর্থ test-appসক্রিয় হবে না।

2

systemd একটি কাজের পরিচালক। জিনিসগুলি কীভাবে কাজ করে সে সম্পর্কে ম্যান পৃষ্ঠা খুব সুনির্দিষ্ট নয়।

আপনি বুট করার সময়, সিস্টেমডিটি কী করে অ্যাঙ্কর জব (যেমন ডিফল্ট.টারাজেটের জন্য কাজ শুরু করে) এর জন্য কাজের অন্তর্ভুক্ত একটি লেনদেন তৈরি করে। এই সমস্ত নির্ভরতা এবং সম্পর্কগুলি কী করে তা কী এবং কী কী কাজ শুরু হবে তা নির্ধারণ করা হয়। অর্ডারিং সংজ্ঞা দেয় যে প্রতিটি অন্যান্য কাজ কী (গুলি) অপেক্ষা করবে। ডিফল্ট.টারাজেট ইউনিট এই সমস্তটির কেন্দ্রে রয়েছে, এ কারণেই যখন ইউনিটগুলি সক্ষম করার সময় আপনি একটি বিপরীত নির্ভরতা ব্যবহার করেন যা সিস্টেস্টটিএল সক্ষম করে একটি ফাইল-সিস্টেম প্রতীকী লিঙ্ক তৈরি করে একটি ফরোয়ার্ড নির্ভরতা সিস্টেম্ট চিহ্নিত করে অনুসরণ করতে পারে (এছাড়াও আপনাকে কেন ফাইল সিস্টেমে সিলেঙ্কগুলি প্রয়োজন প্রথম স্থান). অনুরূপ হয় যখন আপনি ম্যানুয়ালি কোনও ইউনিট শুরু করেন, তখন সেই ইউনিটটি অ্যাঙ্কর হয় এবং লেনদেনটি এটি গণনা করা হয়।

খুব বেশি বিশদে যাওয়ার প্রয়োজন নেই, আমি যা প্রয়োজন = এবং তার পরে = কী করে তা ব্যাখ্যা করব।

প্রয়োজনীয় = যখন আপনি কোনও শুরুর কাজ শুরু করেন (সুস্পষ্টভাবে, বা নির্ভরতার মাধ্যমে: অভ্যন্তরীণভাবে কোনও পার্থক্য নেই) সিস্টেমটি প্রয়োজনীয় ইউনিটের জন্য একটি শুরুর কাজ শুরু করবে trigger এই ইউনিটটি বন্ধ হয়ে গেলে (নোট: থামানো, নিজে নেমে যাচ্ছে না) বা পুনরায় চালু করা হলে আপনার কাছে স্টপ জব শুরু করার সম্পত্তি রয়েছে। এর অর্থ হ'ল যদি কিছু নির্ভরতা / সিস্টেমট্যাক্ট এটিকে বন্ধ / পুনঃসূচনা করতে দেয় তবে আপনি বন্ধ / পুনঃসূচনাও শুরু করবেন। যাইহোক, যদি এটি নিজে থেকে নিচে চলে যায়, আপনি কোনও থামবেন না, কারণ কোনও চাকরি ছিল না এবং সিস্টেমের জড়িততা ছাড়াই রাষ্ট্র পরিবর্তন ঘটেছিল। সেখানেই আপনি বিন্ডসটো = ব্যবহার করবেন (ডিভাইস ইউনিটগুলির অনুরূপ, যা সুস্পষ্ট কারণে সিস্টেমের জড়িত না করে নিষ্ক্রিয় হয়ে যেতে পারে)।

এখন, প্রয়োজন = হিসাবে একা থাকার পরে = এর ব্যবহারের পরামর্শ দেওয়া হচ্ছে এটি যা করা তার জন্য বুদ্ধিমান: শুরু করার কাজটি ব্যর্থ হলে প্রয়োজনীয় প্রার্থীকে বাতিল করুন। এই বাতিলকরণটি কেবল অদ্ভুত কাজগুলিতে কাজ করে, অর্থাত্ যদি অন্য ইউনিট ক্রম সংজ্ঞায়িত না করে তবে সিস্টেমড উভয়ই সমান্তরালভাবে ট্রিগার করে এবং যদি আপনার শুরুর কাজটি আপনার প্রারম্ভিক কাজ ব্যর্থ হওয়ার আগে শেষ হয়, তবে এটি বাতিল করা হবে না (আসলে এটি বাতিল করা যাবে না) । পরে = এর ব্যবহারের অর্থ অন্য জব প্রয়োজনীয় ইউনিটের প্রারম্ভিক কাজ শেষ হওয়া পর্যন্ত অপেক্ষায় থাকে এবং ফলাফলের উপর নির্ভর করে যদি এটি ব্যর্থ হয় তবে আপনার ইউনিটের ওয়েটিং শুরুর কাজটি JOB_DEPENDENCY কাজের ফলাফল দিয়ে বাতিল করা হয়েছে (আপনি কেন হলুদ ব্যবহার করেন [অবরুদ্ধ]] যেমন ক্ষেত্রে বুট এ)। অতএব, এই অবৈধ প্রভাব পরে = ব্যবহার না করে নির্বিচারবাদী।

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

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

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

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