Systemd প্রারম্ভিক নির্দেশিকা: কমান্ড অংশ

Systemd প্রাথমিক নির্দেশিকা: বাস্তব কাজের অংশ

Systemd প্রারম্ভিক নির্দেশিকা: কমান্ড অংশ

লেখক: রুয়ান ইয়িফেং

তারিখ: ২০১৬ সালের ৭ মার্চ

Systemd হল লিনাক্স সিস্টেমের একটি টুল, যা শুরু করতে ব্যবহৃত হয়। গার্ডিয়ান প্রসেস এটি বেশিরভাগ বিতরণের মান কনফিগারেশনে পরিণত হয়েছে।

এই নিবন্ধে এর মৌলিক ব্যবহার বর্ণনা করা হয়েছে, যা উপরের এবং নিচের দুইটি অংশে বিভক্ত। আজ এটি এর প্রধান কমান্ডগুলি উপস্থাপন করবে, পরবর্তী লেখা যুদ্ধের জন্য কিভাবে ব্যবহার করবেন তা পরিচিত করুন। img

এক. উৎস

ইতিহাসে, লিনাক্সের শুরু এখনও গ্রহণ করা হয়েছে init প্রক্রিয়া।

নিচের কমান্ডটি সার্ভিস শুরু করার জন্য ব্যবহার করা হয়।

এই পদ্ধতির দুটি অসুবিধা রয়েছে।

একটি হল শুরু করার সময় দীর্ঘ। init প্রক্রিয়াগুলি ধারাবাহিকভাবে শুরু হয়, শুধুমাত্র পূর্ববর্তী প্রক্রিয়া সম্পন্ন হলে পরবর্তী প্রক্রিয়া শুরু হবে।

দ্বিতীয়ত, স্ক্রিপ্ট শুরু করা জটিল। init প্রক্রিয়া কেবলমাত্র কার্যকরী স্ক্রিপ্ট চালায়, অন্য কিছু নিয়ে চিন্তা করে না। স্ক্রিপ্টটিকে বিভিন্ন পরিস্থিতি পরিচালনা করতে হয়, যা প্রায়শই স্ক্রিপ্টটিকে খুব দীর্ঘ করে তোলে।

দুই, Systemd এর সারসংক্ষেপ

Systemd এই সমস্যাগুলি সমাধানের জন্য তৈরি হয়েছে। এর ডিজাইন লক্ষ্য হল সিস্টেমের শুরু এবং ব্যবস্থাপনার জন্য একটি সম্পূর্ণ সমাধান প্রদান করা।

লিনাক্সের ঐতিহ্য অনুসারে, অক্ষর d এটি ডেমন (daemon) এর সংক্ষিপ্ত রূপ। Systemd এই নামটির অর্থ হলো এটি পুরো সিস্টেমটি রক্ষা করবে।

img

(উপরের ছবিটি Systemd লেখকের) Lennart Poettering

Systemd ব্যবহার করলে আর দরকার নেই init সিস্টেমড প্রতিস্থাপন করেছে initd সিস্টেমের প্রথম প্রক্রিয়া হয়ে ওঠে (PID সমান 1), অন্য প্রক্রিয়াগুলি এর অধীনস্থ প্রক্রিয়া।

উপরের কমান্ডটি Systemd এর সংস্করণ দেখায়।

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 ইউনিক্স দর্শন img

(উপরের চিত্রটি Systemd স্থাপত্য চিত্র)

তিন। সিস্টেম ব্যবস্থাপনা

Systemd একটি কমান্ড নয়, বরং এটি একটি কমান্ডের সেট, যা সিস্টেম ব্যবস্থাপনার বিভিন্ন দিকের সাথে সম্পর্কিত।

3.1 systemctl

systemctl এটি Systemd এর প্রধান কমান্ড, যা সিস্টেম পরিচালনার জন্য ব্যবহৃত হয়।

3.2 systemd-analyze

systemd-analyze স্টার্টআপ সময় দেখার জন্য কমান্ড।

3.3 hostnamectl

hostnamectl এটি বর্তমান হোস্টের তথ্য দেখতে ব্যবহৃত কমান্ড।

3.4 localectl

localectl স্থানীয়করণের সেটিংস দেখার জন্য কমান্ড।

3.5 timedatectl

timedatectl বর্তমান সময় অঞ্চল সেটিংস দেখতে কমান্ড।

3.6 loginctl

loginctl বর্তমান লগ ইন করা ব্যবহারকারীদের দেখার জন্য কমান্ড।

চার, ইউনিট

৪.১ অর্থ

Systemd সমস্ত সিস্টেম সম্পদ পরিচালনা করতে পারে। ভিন্ন ভিন্ন সম্পদকে মোটামুটি ইউনিট (Unit) বলা হয়।

ইউনিট মোট 12 ধরনের বিভক্ত।

  • সার্ভিস ইউনিট: সিস্টেম সার্ভিস
  • লক্ষ্য ইউনিট: একাধিক ইউনিটের সমন্বয়ে গঠিত একটি গ্রুপ
  • ডিভাইস ইউনিট: হার্ডওয়্যার ডিভাইস
  • মাউন্ট ইউনিট: ফাইল সিস্টেমের মাউন্ট পয়েন্ট
  • অটোমাউন্ট ইউনিট:স্বয়ংক্রিয় মাউন্ট পয়েন্ট
  • পথ ইউনিট: ফাইল বা পথ
  • স্কোপ ইউনিট: সিস্টেমড দ্বারা চালিত নয় এমন বাইরের প্রক্রিয়া
  • Slice Unit: প্রক্রিয়া গ্রুপ
  • স্ন্যাপশট ইউনিট: সিস্টেমড স্ন্যাপশট, একটি স্ন্যাপশটে ফিরে যাওয়া যায়।
  • সকেট ইউনিট: প্রক্রিয়ার মধ্যে যোগাযোগের সকেট
  • স্ব্যাপ ইউনিট: স্ব্যাপ ফাইল
  • টাইমার ইউনিট:টাইমার

systemctl list-units আদেশটি বর্তমান সিস্টেমের সব ইউনিট দেখতে পারে।

৪.২ ইউনিটের অবস্থা

systemctl status কমান্ডটি সিস্টেমের অবস্থা এবং একটি একক ইউনিটের অবস্থা দেখতে ব্যবহৃত হয়।

ছাড়া status আদেশ, systemctl এছাড়াও তিনটি অনুসন্ধানের স্থিতি সহজ পদ্ধতি প্রদান করা হয়েছে, মূলত স্ক্রিপ্টের অভ্যন্তরীণ বিচার বিবৃতি ব্যবহারের জন্য।

৪.৩ ইউনিট পরিচালনা

ব্যবহারকারীদের জন্য, সবচেয়ে সাধারণ কমান্ডগুলি নিচে দেওয়া হয়েছে, যা ইউনিট (মূলত সার্ভিস) চালু এবং বন্ধ করার জন্য ব্যবহৃত হয়।

৪.৪ নির্ভরতাসমূহ

ইউনিটগুলির মধ্যে নির্ভরশীলতা রয়েছে: A B এর উপর নির্ভর করে, এর মানে হল যে Systemd যখন A চালু করে, তখন এটি একই সাথে B-ও চালু করবে।

systemctl list-dependencies একটি ইউনিটের সমস্ত নির্ভরতাগুলি তালিকাভুক্ত করতে কমান্ড।

উপরের কমান্ডের আউটপুটে কিছু নির্ভরতাগুলি টার্গেট প্রকারের (নিচে বিস্তারিত দেখুন), যা ডিফল্টভাবে প্রদর্শিত হয় না। যদি টার্গেটগুলি খুলতে চান, তাহলে আপনাকে ব্যবহার করতে হবে --all প্যারামিটার।

পাঁচ, ইউনিটের কনফিগারেশন ফাইল

৫.১ সারসংক্ষেপ

প্রতিটি ইউনিটের একটি কনফিগারেশন ফাইল থাকে, যা সিস্টেমডকে জানায় কীভাবে সেই ইউনিটটি চালু করতে হবে।

Systemd ডিফল্টভাবে ডিরেক্টরি থেকে /etc/systemd/system/ কনফিগারেশন ফাইল পড়ুন। তবে, এর মধ্যে রাখা অধিকাংশ ফাইলই একটি ডিরেক্টরির দিকে নির্দেশ করা সিম্বলিক লিঙ্ক। /usr/lib/systemd/system/ সঠিক কনফিগারেশন ফাইলটি কোন ডিরেক্টরিতে রাখা হয়েছে।

systemctl enable এই কমান্ডটি উপরের দুটি ডিরেক্টরির মধ্যে একটি প্রতীকী লিঙ্ক সম্পর্ক স্থাপন করতে ব্যবহৃত হয়।

যদি কনফিগারেশন ফাইলে বুট করার সময় শুরু করার জন্য সেট করা থাকে, systemctl enable নির্দেশটি সমতুল্য চালু করার জন্য সক্রিয় করা।

এর সাথে সামঞ্জস্যপূর্ণ, systemctl disable একটি ডিরেক্টরির মধ্যে দুটি ডিরেক্টরির মধ্যে সিম্বলিক লিঙ্ক সম্পর্ক বাতিল করার জন্য কমান্ড, যা বুট স্টার্টআপ বাতিল করার সমান।

কনফিগারেশন ফাইলের এক্সটেনশন হল সেই ইউনিটের প্রকার, যেমন sshd.socket যদি বাদ দেওয়া হয়, Systemd এর ডিফল্ট সূচক নাম হল .service তাহলে sshd বুঝা হবে sshd.service

৫.২ কনফিগারেশন ফাইলের অবস্থা

systemctl list-unit-files কমান্ড সমস্ত কনফিগারেশন ফাইল তালিকাভুক্ত করতে ব্যবহৃত হয়।

এই কমান্ডটি একটি তালিকা আউটপুট করবে।

এই তালিকায় প্রতিটি কনফিগারেশনের অবস্থান দেখানো হয়েছে, মোট চার ধরনের।

  • সক্ষম: শুরু লিঙ্ক প্রতিষ্ঠিত হয়েছে
  • অক্ষম: চালু করার লিঙ্ক তৈরি হয়নি
  • স্ট্যাটিক: এই কনফিগারেশন ফাইল নেই [Install] অংশ (কার্যকর করা যাবে না), শুধুমাত্র অন্যান্য কনফিগারেশন ফাইলের নির্ভরতায় ব্যবহার করা যেতে পারে।
  • মাস্কড: এই কনফিগারেশন ফাইলটি স্টার্টআপ লিঙ্ক তৈরি করতে নিষিদ্ধ।

দয়া করে লক্ষ্য করুন, কনফিগারেশন ফাইলের অবস্থা থেকে বোঝা যায় না যে, এই ইউনিটটি চলছে কিনা। এটি পূর্বে উল্লেখিত কাজটি করতে হবে। systemctl status আদেশ।

একবার কনফিগারেশন ফাইল পরিবর্তন করার পর, SystemD-কে কনফিগারেশন ফাইল পুনরায় লোড করতে হবে এবং তারপর পুনরায় চালু করতে হবে, অন্যথায় পরিবর্তন কার্যকর হবে না।

৫.৩ কনফিগারেশন ফাইলের ফরম্যাট

কনফিগারেশন ফাইল হল একটি সাধারণ টেক্সট ফাইল, যা টেক্সট এডিটর দিয়ে খোলা যায়।

systemctl cat নির্দেশটি কনফিগারেশন ফাইলের বিষয়বস্তু দেখতে পারে।

উপরের আউটপুট থেকে দেখা যাচ্ছে, কনফিগারেশন ফাইলটি কয়েকটি ব্লকে ভাগ করা হয়েছে। প্রতিটি ব্লকের প্রথম লাইনটি, একটি বর্গাকার বন্ধনী দ্বারা চিহ্নিত নামের মাধ্যমে নির্দেশিত হয়, যেমন [Unit] দয়া করে লক্ষ্য করুন, কনফিগারেশন ফাইলের ব্লক নাম এবং ক্ষেত্রের নাম উভয়ই বড় এবং ছোট হাতের অক্ষরের প্রতি সংবেদনশীল।

প্রতিটি ব্লকের অভ্যন্তরে কিছু সমান চিহ্ন দ্বারা সংযুক্ত কী-মূল্য জোড় রয়েছে।

5.4 কনফিগারেশন ফাইলের ব্লক

[Unit] ব্লক সাধারণত কনফিগারেশন ফাইলের প্রথম ব্লক, যা ইউনিটের মেটাডেটা সংজ্ঞায়িত করতে এবং অন্যান্য ইউনিটের সাথে সম্পর্ক কনফিগার করতে ব্যবহৃত হয়। এর প্রধান ক্ষেত্রগুলি নিচে দেওয়া হলো।

  • Dsecription সংক্ষিপ্ত বর্ণনা
  • Documentation ডকুমেন্টের ঠিকানা
  • Requires বর্তমান ইউনিটের নির্ভরশীল অন্যান্য ইউনিট যদি চালু না থাকে, তাহলে বর্তমান ইউনিট শুরু হতে ব্যর্থ হবে।
  • Wants বর্তমান ইউনিটের সাথে সংযুক্ত অন্যান্য ইউনিটগুলি, যদি সেগুলি চলমান না থাকে, তবে বর্তমান ইউনিটটি ব্যর্থভাবে শুরু হবে না।
  • BindsTo এবং Requires এটি উল্লেখ করে যে নির্দিষ্ট ইউনিট যদি বন্ধ হয়ে যায়, তাহলে বর্তমান ইউনিট কাজ করা বন্ধ করে দেবে।
  • Before যদি নির্দিষ্ট ক্ষেত্রের ইউনিটও চালু করতে হয়, তবে এটি বর্তমান ইউনিটের পরে চালু করতে হবে।
  • After যদি এই ক্ষেত্রটি নির্দিষ্ট ইউনিটও চালু করতে বলে, তাহলে এটি বর্তমান ইউনিটের আগে চালু করতে হবে।
  • Conflicts এখানে নির্ধারিত ইউনিটটি বর্তমান ইউনিটের সাথে একসাথে চালানো যাবে না।
  • Condition... বর্তমান ইউনিট চালানোর জন্য প্রয়োজনীয় শর্তগুলি পূরণ করতে হবে, অন্যথায় এটি চলবে না।
  • Assert... বর্তমান ইউনিটের চলার জন্য যে শর্তগুলো পূরণ করতে হবে, তা না হলে এটি চালু হতে ব্যর্থ হবে।

[Install] সাধারণত এটি কনফিগারেশন ফাইলের শেষের ব্লক, যা কিভাবে শুরু করতে হবে এবং কি না বুট করার জন্য তা নির্ধারণ করে। এর প্রধান ক্ষেত্রগুলি নিম্নরূপ।

  • WantedBy এর মান একটি বা একাধিক টার্গেট, বর্তমান ইউনিট সক্রিয় হলে (সক্রিয়) প্রতীক লিঙ্ক স্থাপন করা হবে। /etc/systemd/system সূচী নীচে দ্বারা টার্গেট নাম + .wants পূর্বসর্গ গঠিত উপনামার মধ্যে
  • RequiredBy এর মান একটি বা একাধিক টার্গেট, বর্তমান ইউনিট সক্রিয় থাকাকালীন, সিম্বলিক লিঙ্কগুলি রাখা হবে। /etc/systemd/system সূচী নীচে দ্বারা টার্গেট নাম + .required পূর্বসর্গ গঠিত উপনামার মধ্যে
  • Alias বর্তমান ইউনিটের জন্য উপলব্ধ শুরু করার উপনাম
  • Also বর্তমান ইউনিট সক্রিয় (এনেবল) হলে, একই সাথে সক্রিয় হওয়া অন্যান্য ইউনিট।

[Service] সার্ভিসের কনফিগারেশনের জন্য ব্লক, শুধুমাত্র সার্ভিস টাইপের ইউনিটের জন্য এই ব্লকটি রয়েছে। এর প্রধান ক্ষেত্রগুলি নিম্নরূপ।

  • Type শুরু করার সময় প্রক্রিয়ার আচরণ সংজ্ঞায়িত করুন। এর নিম্নলিখিত কয়েকটি মান রয়েছে।
  • Type=simple ডিফল্ট মান, কার্যকর করুন ExecStart নির্দেশিত কমান্ড, প্রধান প্রক্রিয়া শুরু করুন।
  • Type=forking : পিতামাতার প্রক্রিয়া থেকে ফর্ক পদ্ধতিতে একটি শিশু প্রক্রিয়া তৈরি করা হয়, তৈরি হওয়ার পর পিতামাতা প্রক্রিয়া তাৎক্ষণিকভাবে বের হয়ে যাবে।
  • Type=oneshot একক প্রক্রিয়া, Systemd বর্তমান পরিষেবা শেষ হওয়া পর্যন্ত অপেক্ষা করবে, তারপর পরবর্তী কার্যক্রম চালিয়ে যাবে।
  • Type=dbus বর্তমান সেবা D-Bus এর মাধ্যমে শুরু হয়।
  • Type=notify বর্তমান সেবা শুরু হয়ে গেছে, জানানো হবে। Systemd আরও চালিয়ে যান।
  • Type=idle যদি অন্য কোনো কাজ সম্পন্ন হয়, তবেই বর্তমান পরিষেবা চালু হবে।
  • ExecStart বর্তমান সেবাটি শুরু করার কমান্ড
  • ExecStartPre বর্তমান পরিষেবা চালু করার আগে নির্বাহিত কমান্ড
  • ExecStartPost বর্তমান সেবা শুরু করার পর কার্যকর করা হবে এমন আদেশ
  • ExecReload বর্তমান সার্ভিসটি পুনরায় শুরু করার সময় কার্যকর করা হয় এমন কমান্ড
  • ExecStop বর্তমান পরিষেবা বন্ধ করার সময় সম্পাদিত কমান্ড
  • ExecStopPost : পরিষেবা বন্ধ করার পরে কার্যকর করা আদেশ বন্ধ করুন
  • RestartSec বর্তমান সেবার স্বয়ংক্রিয় পুনরায় চালু করার জন্য সময়সীমা (সেকেন্ডে)
  • Restart কোন পরিস্থিতিতে Systemd স্বয়ংক্রিয়ভাবে বর্তমান পরিষেবা পুনরায় শুরু করবে, সম্ভাব্য মান অন্তর্ভুক্ত: always (সর্বদা রিস্টার্ট) on-success on-failure on-abnormal on-abort on-watchdog
  • TimeoutSec Systemd বর্তমান পরিষেবা বন্ধ করার আগে অপেক্ষা করার সেকেন্ডের সংখ্যা সংজ্ঞায়িত করুন।
  • Environment নির্দিষ্ট পরিবেশ পরিবর্তনশীল

ইউনিট কনফিগারেশন ফাইলের সম্পূর্ণ ক্ষেত্রের তালিকার জন্য, দয়া করে দেখুন। সরকারি ডকুমেন্ট

ছয়, লক্ষ্য

কম্পিউটার চালু করার সময় অনেক ইউনিট চালু করতে হয়। যদি প্রতিবার চালু করার সময় প্রতিটি ইউনিটকে আলাদাভাবে উল্লেখ করতে হয়, তবে এটি স্পষ্টতই খুব অস্বস্তিকর। Systemd এর সমাধান হল টার্গেট।

简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

প্রথাগত init স্টার্টআপ মোডে, RunLevel এর ধারণা আছে, যা Target এর কার্যকলাপের সাথে খুবই সাদৃশ্যপূর্ণ। পার্থক্য হলো, RunLevel পারস্পরিকভাবে একে অপরকে বাদ দেয়, একাধিক RunLevel একসাথে শুরু হতে পারে না, কিন্তু একাধিক Target একসাথে শুরু হতে পারে।

Target এবং প্রচলিত RunLevel এর মধ্যে সম্পর্ক নিম্নরূপ:

এটি সাথে init প্রক্রিয়ার প্রধান পার্থক্যগুলি নিম্নরূপ।

ডিফল্ট রানলেভেল (এখন) /etc/inittab ফাইল সেটিংস) এখন ডিফল্ট টার্গেট দ্বারা প্রতিস্থাপিত হয়েছে, অবস্থান হল /etc/systemd/system/default.target সাধারণত চিহ্নগুলি সংযুক্ত করে graphical.target (গ্রাফিকাল ইন্টারফেস) অথবা multi-user.target (বহু ব্যবহারকারী কমান্ড লাইন)

(২) স্ক্রিপ্ট শুরু করার অবস্থান আগে ছিল /etc/init.d ডিরেক্টরি, বিভিন্ন রান লেভেল ডিরেক্টরিতে সিম্বলিক লিঙ্ক (যেমন /etc/rc3.d /etc/rc5.d এখন এটি সংরক্ষিত আছে /lib/systemd/system এবং /etc/systemd/system বিষয়বস্তু।

(৩) কনফিগারেশন ফাইলের অবস্থান আগে init প্রক্রিয়ার কনফিগারেশন ফাইল হল /etc/inittab বিভিন্ন পরিষেবার কনফিগারেশন ফাইলগুলি সংরক্ষিত থাকে /etc/sysconfig সূচী। বর্তমানে কনফিগারেশন ফাইলগুলি প্রধানত সংরক্ষিত রয়েছে /lib/systemd তালিকা, এখানে /etc/systemd ডিরেক্টরির মধ্যে পরিবর্তনগুলি মূল সেটিংসকে ওভাররাইট করতে পারে।

সাত. লগ ব্যবস্থাপনা

Systemd সমস্ত ইউনিটের স্টার্ট লগ একত্রিতভাবে পরিচালনা করে। এর ফলে সুবিধা হলো, আপনি শুধুমাত্র journalctl একটি কমান্ড, সমস্ত লগ দেখার জন্য (কর্ণেল লগ এবং অ্যাপ্লিকেশন লগ)। লগের কনফিগারেশন ফাইল হল /etc/systemd/journald.conf

journalctl শক্তিশালী, ব্যবহার করার অনেক উপায় রয়েছে।

(সমাপ্ত)

ডকুমেন্টের তথ্য

আপনি সাম্প্রতিককালে ব্যবহার করেছেন:

সংগ্রহ মেনু QQ