কিভাবে একটি সিস্টেমযুক্ত লক্ষ্য তৈরি করতে?


16

সিস্টেমডের বিষয়ে প্রচুর পরিমাণে একটি পোস্ট, ইউটিউব ভিডিও এবং "ডকুমেন্টেশন" এর মাধ্যমে প্রচুর অনুসন্ধান করার পরেও আমি এখনও ক্ষতিতে আছি।

লিঙ্কটি ( https://wiki.archlinux.org/index.php/systemd#Create_custom_target ) আশাব্যঞ্জক বলে মনে হয়েছিল, তবে এটি কিছুটা অস্পষ্ট ছিল (আমার কাছে)।

প্রশ্ন

কেউ কীভাবে একটি কাস্টম সিস্টেমড টার্গেট (IE: foo.target) তৈরি করতে যায় যাতে কেউ নির্বাচনী সার্ভিস ইউনিট দিয়ে বুট করতে পারে?

উদাহরণ

  1. সিস্টেম বুটগুলি ডিফল্ট.আরগারেট ("foo.target" এর সিমলিংক)
  2. "foo.target" কেবল একটি বেয়ারবোনস এক্স সার্ভার এবং জিইউআই প্রোগ্রাম শুরু করে, "জিভিএম" বলুন।

কারণ

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

আগাম ধন্যবাদ!

উত্তর:


16

পড়ার মাধ্যমে man 5 systemd.unitএবং man 5 systemd.targetআমাদের জানায় যে ইউনিট ফাইলগুলি লক্ষ্যমাত্রা নির্ধারণের পাশাপাশি সমস্ত সিস্টেম সিস্টেমের জন্য ব্যবহৃত হয়। কীভাবে কোনও লক্ষ্য তৈরি করতে হয় সে সম্পর্কে কোনও ডকুমেন্টেশন নেই , সুতরাং এটি কীভাবে করা উচিত তা নির্ধারণ করা শক্ত তবে এটি পরিষেবা তৈরির চেয়ে খুব আলাদা নয়।

যখন আপনি আপনার লক্ষ্য তৈরি করেন, আপনি করতে হবে symlinks করতে target.wantssystemd হল পরিষেবার ডিরেক্টরি থেকে নির্দেশিকা। তারপরে আপনি আপনার টার্গেট সেট / বুট করতে পারবেন। এটি আপনার উদাহরণ দিয়ে দেওয়া দেখতে কেমন পারে তা এখানে।

/etc/systemd/system/foo.target

এটি টার্গেটের ইউনিট ফাইল। যদি গ্রাফিকাল.আরটিজেটকে উদাহরণ হিসাবে নেওয়া হয়, তবে আমরা এটি বেস হিসাবে ব্যবহার করে আমাদের নিজস্ব লক্ষ্য তৈরি করতে পারি।

[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes

সিস্টেমযুক্ত ম্যানেজগুলি থেকে নেওয়া বিকল্পগুলি ব্যাখ্যা করতে;

  • Description- লক্ষ্য বর্ণনা করে। আপনার বুঝতে হবে
  • Requires- লক্ষ্য হার্ড নির্ভরতা। আপনার নিজের পরিষেবা (গুলি) শুরু করার আগে আপনার প্রাথমিক সিস্টেমটি শুরু হওয়া উচিত
  • Wants- নরম নির্ভরতা। লক্ষ্যগুলি এগুলি শুরু করার প্রয়োজন হয় না ।
  • Conflicts - কোনও ইউনিটে যদি অন্য ইউনিটে দ্বন্দ্বের সেটিং থাকে তবে প্রারম্ভিকটি শুরু করা পরবর্তীকালে এবং বিপরীতভাবে থামবে।
  • After - এই পরিষেবাগুলি পরে বুট
  • AllowIsolate- সত্যিই আপনার এবং আপনার পরিবেশের উপর নির্ভরশীল। বিশদটি ম্যানপেজে পাওয়া যায়systemd.unit(5)

/etc/systemd/system/foo.target.wants/

এটি সেই ডিরেক্টরি যেখানে আপনি আপনার টার্গেটের জন্য প্রয়োজনীয় পরিষেবাগুলি তৈরি করবেন / যুক্ত করবেন। এটি Wants=ইউনিট ফাইলের বিকল্পের সমতুল্য । এই ডিরেক্টরিটি তৈরি করুন এবং তারপরে সিমলিঙ্কগুলি তৈরি করুন; ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service। এটি সিস্টেম ডিরেক্টরিতে বার.সার্ভিস থেকে আপনার foo.target.wants ডিরেক্টরিতে একটি সিমিলিংক তৈরি করে।


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


আমি একটি নতুন লক্ষ্য তৈরি করতে উপরেরটিকে অনুসরণ করে আমার পরিষেবাতে কয়েকটি লক্ষ্য যুক্ত করেছি। তবে, সেগুলির কোনওটিই সিস্টেমড দ্বারা শুরু করা হয়নি is সদ্য যুক্ত হওয়া লক্ষ্যবস্তুতে পরিষেবাগুলি প্রদর্শন করে এমন কোনও উদাহরণ রয়েছে কি?
লিনাক্সফান

1
আপনি যদি বুট চালানোর জন্য কোনও কাস্টম পরিষেবা সেট আপ করার সহজ পদক্ষেপগুলি সন্ধান করছেন তবে নেক্রোমেন্সারের স্ট্যাক পোস্টটি দেখুন ।
17

@linuxfan আমি foo.targetএর Requiresক্ষেত্র এবং Beforeক্ষেত্রের সাথে যুক্ত করছি multi-user.targetএবং এটি পছন্দ করে Requires: base.target foo.target। এর পরে আমি আমার আর্চ লিনাক্স ভিএম রিবুট করব এবং foobar.serviceস্বয়ংক্রিয়ভাবে ডেমোন হিসাবে চালাব।
L_K

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