Systemd প্রাথমিক নির্দেশিকা: বাস্তব কাজের অংশ
Systemd প্রারম্ভিক নির্দেশিকা: কমান্ড অংশ এক. উৎস দুই, Systemd এর সারসংক্ষেপ তিন। সিস্টেম ব্যবস্থাপনা 3.1 systemctl 3.2 systemd-analyze 3.3 hostnamectl 3.4 localectl 3.5 timedatectl 3.6 loginctl চার, ইউনিট ৪.১ অর্থ ৪.২ ইউনিটের অবস্থা ৪.৩ ইউনিট পরিচালনা ৪.৪ নির্ভরতাসমূহ পাঁচ, ইউনিটের কনফিগারেশন ফাইল ৫.১ সারসংক্ষেপ ৫.২ কনফিগারেশন ফাইলের অবস্থা ৫.৩ কনফিগারেশন ফাইলের ফরম্যাট 5.4 কনফিগারেশন ফাইলের ব্লক ছয়, লক্ষ্য সাত. লগ ব্যবস্থাপনা ডকুমেন্টের তথ্য
লেখক: রুয়ান ইয়িফেং
তারিখ: ২০১৬ সালের ৭ মার্চ
Systemd হল লিনাক্স সিস্টেমের একটি টুল, যা শুরু করতে ব্যবহৃত হয়। গার্ডিয়ান প্রসেস এটি বেশিরভাগ বিতরণের মান কনফিগারেশনে পরিণত হয়েছে।
এই নিবন্ধে এর মৌলিক ব্যবহার বর্ণনা করা হয়েছে, যা উপরের এবং নিচের দুইটি অংশে বিভক্ত। আজ এটি এর প্রধান কমান্ডগুলি উপস্থাপন করবে, পরবর্তী লেখা যুদ্ধের জন্য কিভাবে ব্যবহার করবেন তা পরিচিত করুন।
ইতিহাসে,
লিনাক্সের শুরু
এখনও গ্রহণ করা হয়েছে
init
প্রক্রিয়া।
নিচের কমান্ডটি সার্ভিস শুরু করার জন্য ব্যবহার করা হয়।
xxxxxxxxxx
$ sudo /etc/init.d/apache2 start
# অথবা
$ service apache2 start
এই পদ্ধতির দুটি অসুবিধা রয়েছে।
একটি হল শুরু করার সময় দীর্ঘ।
init
প্রক্রিয়াগুলি ধারাবাহিকভাবে শুরু হয়, শুধুমাত্র পূর্ববর্তী প্রক্রিয়া সম্পন্ন হলে পরবর্তী প্রক্রিয়া শুরু হবে।
দ্বিতীয়ত, স্ক্রিপ্ট শুরু করা জটিল।
init
প্রক্রিয়া কেবলমাত্র কার্যকরী স্ক্রিপ্ট চালায়, অন্য কিছু নিয়ে চিন্তা করে না। স্ক্রিপ্টটিকে বিভিন্ন পরিস্থিতি পরিচালনা করতে হয়, যা প্রায়শই স্ক্রিপ্টটিকে খুব দীর্ঘ করে তোলে।
Systemd এই সমস্যাগুলি সমাধানের জন্য তৈরি হয়েছে। এর ডিজাইন লক্ষ্য হল সিস্টেমের শুরু এবং ব্যবস্থাপনার জন্য একটি সম্পূর্ণ সমাধান প্রদান করা।
লিনাক্সের ঐতিহ্য অনুসারে, অক্ষর
d
এটি ডেমন (daemon) এর সংক্ষিপ্ত রূপ। Systemd এই নামটির অর্থ হলো এটি পুরো সিস্টেমটি রক্ষা করবে।
(উপরের ছবিটি Systemd লেখকের) Lennart Poettering )
Systemd ব্যবহার করলে আর দরকার নেই
init
সিস্টেমড প্রতিস্থাপন করেছে
initd
সিস্টেমের প্রথম প্রক্রিয়া হয়ে ওঠে (PID সমান 1), অন্য প্রক্রিয়াগুলি এর অধীনস্থ প্রক্রিয়া।
xxxxxxxxxx
$ systemctl --version
উপরের কমান্ডটি Systemd এর সংস্করণ দেখায়।
Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 ইউনিক্স দর্শন
(উপরের চিত্রটি Systemd স্থাপত্য চিত্র)
Systemd একটি কমান্ড নয়, বরং এটি একটি কমান্ডের সেট, যা সিস্টেম ব্যবস্থাপনার বিভিন্ন দিকের সাথে সম্পর্কিত।
systemctl
এটি Systemd এর প্রধান কমান্ড, যা সিস্টেম পরিচালনার জন্য ব্যবহৃত হয়।
xxxxxxxxxx
# সিস্টেম পুনরায় চালু করুন
$ sudo systemctl reboot
# সিস্টেম বন্ধ করুন, পাওয়ার কেটে দিন
$ sudo systemctl poweroff
# CPU কাজ করা বন্ধ করে দিয়েছে
$ sudo systemctl halt
# সিস্টেম স্থগিত করুন
$ sudo systemctl suspend
# সিস্টেমকে শীতকালীন নিদ্রায় প্রবেশ করান
$ sudo systemctl hibernate
# সিস্টেমকে ইন্টারঅ্যাকটিভ স্লিপ মোডে প্রবেশ করান
$ sudo systemctl hybrid-sleep
# উদ্ধার অবস্থায় প্রবেশ শুরু (একক ব্যবহারকারী অবস্থায়)
$ sudo systemctl rescue
systemd-analyze
স্টার্টআপ সময় দেখার জন্য কমান্ড।
xxxxxxxxxx
# শুরু সময় দেখুন
$ systemd-analyze
# প্রতিটি পরিষেবার শুরু হওয়ার সময় দেখুন
$ systemd-analyze blame
# জলপ্রপাতের মতো সূচনার প্রক্রিয়ার প্রবাহ প্রদর্শন
$ systemd-analyze critical-chain
নির্দিষ্ট পরিষেবার শুরু প্রবাহ দেখান
$ systemd-analyze critical-chain atd.service
hostnamectl
এটি বর্তমান হোস্টের তথ্য দেখতে ব্যবহৃত কমান্ড।
xxxxxxxxxx
# বর্তমান হোস্টের তথ্য দেখান
$ hostnamectl
# হোস্টনাম সেট করুন।
$ sudo hostnamectl set-hostname rhel7
localectl
স্থানীয়করণের সেটিংস দেখার জন্য কমান্ড।
xxxxxxxxxx
# স্থানীয়করণ সেটিংস দেখুন
$ localectl
# স্থানীয়করণের প্যারামিটার সেট করুন।
$ sudo localectl set-locale LANG=en_GB.utf8
$ sudo localectl set-keymap en_GB
timedatectl
বর্তমান সময় অঞ্চল সেটিংস দেখতে কমান্ড।
# বর্তমান সময় অঞ্চল সেটিংস দেখুন
$ timedatectl
# সমস্ত উপলব্ধ সময় অঞ্চল দেখান
$ timedatectl list-timezones
# বর্তমান সময় অঞ্চল সেট করুন
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS
loginctl
বর্তমান লগ ইন করা ব্যবহারকারীদের দেখার জন্য কমান্ড।
xxxxxxxxxx
# বর্তমান সেশন তালিকা করুন
$ loginctl list-sessions
বর্তমান লগইন করা ব্যবহারকারীদের তালিকা করুন
$ loginctl list-users
নির্দিষ্ট ব্যবহারকারীর তথ্য প্রদর্শন করুন।
$ loginctl show-user ruanyf
Systemd সমস্ত সিস্টেম সম্পদ পরিচালনা করতে পারে। ভিন্ন ভিন্ন সম্পদকে মোটামুটি ইউনিট (Unit) বলা হয়।
ইউনিট মোট 12 ধরনের বিভক্ত।
systemctl list-units
আদেশটি বর্তমান সিস্টেমের সব ইউনিট দেখতে পারে।
xxxxxxxxxx
# চলমান ইউনিটগুলি তালিকা করুন
$ systemctl list-units
# সমস্ত ইউনিট তালিকাভুক্ত করুন, যার মধ্যে কনফিগারেশন ফাইল পাওয়া যায়নি বা শুরু হতে ব্যর্থ হয়েছে।
$ systemctl list-units --all
# সমস্ত চলমান ইউনিটের তালিকা তৈরি করুন
$ systemctl list-units --all --state=inactive
# সমস্ত লোড ব্যর্থ ইউনিট তালিকা করুন
$ systemctl list-units --failed
# সমস্ত চলমান, service ধরনের ইউনিট তালিকাভুক্ত করুন
$ systemctl list-units --type=service
systemctl status
কমান্ডটি সিস্টেমের অবস্থা এবং একটি একক ইউনিটের অবস্থা দেখতে ব্যবহৃত হয়।
xxxxxxxxxx
# সিস্টেমের অবস্থা প্রদর্শন করুন
$ systemctl status
# একটি ইউনিটের স্থিতি প্রদর্শন করুন
$ sysystemctl status bluetooth.service
দূরবর্তী হোস্টের একটি ইউনিটের স্থিতি প্রদর্শন করুন।
$ systemctl -H root@rhel7.example.com status httpd.service
ছাড়া
status
আদেশ,
systemctl
এছাড়াও তিনটি অনুসন্ধানের স্থিতি সহজ পদ্ধতি প্রদান করা হয়েছে, মূলত স্ক্রিপ্টের অভ্যন্তরীণ বিচার বিবৃতি ব্যবহারের জন্য।
xxxxxxxxxx
# একটি ইউনিট চলমান কি না তা দেখান
$ systemctl is-active application.service
# একটি ইউনিট কি চালু ব্যর্থ অবস্থায় আছে তা প্রদর্শন করুন
$ systemctl is-failed application.service
# কোনো Unit সেবার জন্য স্টার্ট লিঙ্ক তৈরি হয়েছে কি না তা দেখান
$ systemctl is-enabled application.service
ব্যবহারকারীদের জন্য, সবচেয়ে সাধারণ কমান্ডগুলি নিচে দেওয়া হয়েছে, যা ইউনিট (মূলত সার্ভিস) চালু এবং বন্ধ করার জন্য ব্যবহৃত হয়।
xxxxxxxxxx
# একটি পরিষেবা তাত্ক্ষণিকভাবে শুরু করুন
$ sudo systemctl start apache.service
# একটি পরিষেবা অবিলম্বে বন্ধ করুন
$ sudo systemctl stop apache.service
# একটি পরিষেবা পুনরায় চালু করুন
$ sudo systemctl restart apache.service
# একটি সার্ভিসের সমস্ত সাব-প্রক্রিয়া হত্যা করুন
$ sudo systemctl kill apache.service
একটি পরিষেবার কনফিগারেশন ফাইল পুনরায় লোড করুন
$ sudo systemctl reload apache.service
# সব পরিবর্তিত কনফিগারেশন ফাইল পুনরায় লোড করুন
$ sudo systemctl daemon-reload
কোনো ইউনিটের সমস্ত মৌলিক প্যারামিটার দেখান
$ systemctl show httpd.service
একটি ইউনিটের নির্দিষ্ট গুণের মান প্রদর্শন করুন।
$ systemctl show -p CPUShares httpd.service
# নির্দিষ্ট ইউনিটের নির্ধারিত বৈশিষ্ট্য সেট করা
$ sudo systemctl set-property httpd.service CPUShares=500
ইউনিটগুলির মধ্যে নির্ভরশীলতা রয়েছে: A B এর উপর নির্ভর করে, এর মানে হল যে Systemd যখন A চালু করে, তখন এটি একই সাথে B-ও চালু করবে।
systemctl list-dependencies
একটি ইউনিটের সমস্ত নির্ভরতাগুলি তালিকাভুক্ত করতে কমান্ড।
xxxxxxxxxx
$ systemctl list-dependencies nginx.service
উপরের কমান্ডের আউটপুটে কিছু নির্ভরতাগুলি টার্গেট প্রকারের (নিচে বিস্তারিত দেখুন), যা ডিফল্টভাবে প্রদর্শিত হয় না। যদি টার্গেটগুলি খুলতে চান, তাহলে আপনাকে ব্যবহার করতে হবে
--all
প্যারামিটার।
xxxxxxxxxx
$ systemctl list-dependencies --all nginx.service
প্রতিটি ইউনিটের একটি কনফিগারেশন ফাইল থাকে, যা সিস্টেমডকে জানায় কীভাবে সেই ইউনিটটি চালু করতে হবে।
Systemd ডিফল্টভাবে ডিরেক্টরি থেকে
/etc/systemd/system/
কনফিগারেশন ফাইল পড়ুন। তবে, এর মধ্যে রাখা অধিকাংশ ফাইলই একটি ডিরেক্টরির দিকে নির্দেশ করা সিম্বলিক লিঙ্ক।
/usr/lib/systemd/system/
সঠিক কনফিগারেশন ফাইলটি কোন ডিরেক্টরিতে রাখা হয়েছে।
systemctl enable
এই কমান্ডটি উপরের দুটি ডিরেক্টরির মধ্যে একটি প্রতীকী লিঙ্ক সম্পর্ক স্থাপন করতে ব্যবহৃত হয়।
xxxxxxxxxx
$ sudo systemctl enable clamd@scan.service
# সমান সমান
$ sudo ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-user.target.wants/clamd@scan.service'
যদি কনফিগারেশন ফাইলে বুট করার সময় শুরু করার জন্য সেট করা থাকে,
systemctl enable
নির্দেশটি সমতুল্য চালু করার জন্য সক্রিয় করা।
এর সাথে সামঞ্জস্যপূর্ণ,
systemctl disable
একটি ডিরেক্টরির মধ্যে দুটি ডিরেক্টরির মধ্যে সিম্বলিক লিঙ্ক সম্পর্ক বাতিল করার জন্য কমান্ড, যা বুট স্টার্টআপ বাতিল করার সমান।
xxxxxxxxxx
$ sudo systemctl disable clamd@scan.service
কনফিগারেশন ফাইলের এক্সটেনশন হল সেই ইউনিটের প্রকার, যেমন
sshd.socket
যদি বাদ দেওয়া হয়, Systemd এর ডিফল্ট সূচক নাম হল
.service
তাহলে
sshd
বুঝা হবে
sshd.service
。
systemctl list-unit-files
কমান্ড সমস্ত কনফিগারেশন ফাইল তালিকাভুক্ত করতে ব্যবহৃত হয়।
xxxxxxxxxx
# সমস্ত কনফিগারেশন ফাইল তালিকাভুক্ত করুন
$ systemctl list-unit-files
নির্দিষ্ট ধরনের কনফিগারেশন ফাইলগুলি তালিকাভুক্ত করুন
$ systemctl list-unit-files --type=service
এই কমান্ডটি একটি তালিকা আউটপুট করবে।
xxxxxxxxxx
$ systemctl list-unit-files
UNIT FILE STATE
chronyd.service enabled
clamd@.service static
clamd@scan.service disabled
এই তালিকায় প্রতিটি কনফিগারেশনের অবস্থান দেখানো হয়েছে, মোট চার ধরনের।
[Install]
অংশ (কার্যকর করা যাবে না), শুধুমাত্র অন্যান্য কনফিগারেশন ফাইলের নির্ভরতায় ব্যবহার করা যেতে পারে।
দয়া করে লক্ষ্য করুন, কনফিগারেশন ফাইলের অবস্থা থেকে বোঝা যায় না যে, এই ইউনিটটি চলছে কিনা। এটি পূর্বে উল্লেখিত কাজটি করতে হবে।
systemctl status
আদেশ।
xxxxxxxxxx
$ systemctl status bluetooth.service
একবার কনফিগারেশন ফাইল পরিবর্তন করার পর, SystemD-কে কনফিগারেশন ফাইল পুনরায় লোড করতে হবে এবং তারপর পুনরায় চালু করতে হবে, অন্যথায় পরিবর্তন কার্যকর হবে না।
xxxxxxxxxx
$ sudo systemctl daemon-reload
$ sudo systemctl restart httpd.service
কনফিগারেশন ফাইল হল একটি সাধারণ টেক্সট ফাইল, যা টেক্সট এডিটর দিয়ে খোলা যায়।
systemctl cat
নির্দেশটি কনফিগারেশন ফাইলের বিষয়বস্তু দেখতে পারে।
xxxxxxxxxx
$ systemctl cat atd.service
[Unit]
Description=ATD daemon
[Service]
Type=forking
ExecStart=/usr/bin/atd
[Install]
WantedBy=multi-user.target
উপরের আউটপুট থেকে দেখা যাচ্ছে, কনফিগারেশন ফাইলটি কয়েকটি ব্লকে ভাগ করা হয়েছে। প্রতিটি ব্লকের প্রথম লাইনটি, একটি বর্গাকার বন্ধনী দ্বারা চিহ্নিত নামের মাধ্যমে নির্দেশিত হয়, যেমন
[Unit]
দয়া করে লক্ষ্য করুন, কনফিগারেশন ফাইলের ব্লক নাম এবং ক্ষেত্রের নাম উভয়ই বড় এবং ছোট হাতের অক্ষরের প্রতি সংবেদনশীল।
প্রতিটি ব্লকের অভ্যন্তরে কিছু সমান চিহ্ন দ্বারা সংযুক্ত কী-মূল্য জোড় রয়েছে।
xxxxxxxxxx
[Section]
Directive1=value
Directive2=value
. . .
[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 একসাথে শুরু হতে পারে।
xxxxxxxxxx
# বর্তমান সিস্টেমের সব টার্গেট দেখুন
$ systemctl list-unit-files --type=target
# একটি লক্ষ্য অন্তর্ভুক্ত সমস্ত ইউনিট দেখুন
$ systemctl list-dependencies multi-user.target
# শুরু করার সময় ডিফল্ট টার্গেট দেখুন
$ systemctl get-default
# চালুর সময় ডিফল্ট লক্ষ্য সেট করুন
$ sudo systemctl set-default multi-user.target
# টার্গেট পরিবর্তন করার সময়, পূর্ববর্তী টার্গেটের চালু করা প্রক্রিয়া ডিফল্টভাবে বন্ধ হবে না,
# systemctl isolate কমান্ড এই আচরণ পরিবর্তন করে,
# পূর্বের টার্গেটের মধ্যে সব প্রক্রিয়া বন্ধ করুন যা পরের টার্গেটের অন্তর্ভুক্ত নয়
$ sudo systemctl isolate multi-user.target
Target এবং প্রচলিত RunLevel এর মধ্যে সম্পর্ক নিম্নরূপ:
xxxxxxxxxx
Traditional runlevel New target name Symbolically linked to...
Runlevel 0 | runlevel0.target -> poweroff.target
Runlevel 1 | runlevel1.target -> rescue.target
Runlevel 2 | runlevel2.target -> multi-user.target
Runlevel 3 | runlevel3.target -> multi-user.target
Runlevel 4 | runlevel4.target -> multi-user.target
Runlevel 5 | runlevel5.target -> graphical.target
Runlevel 6 | runlevel6.target -> reboot.target
এটি সাথে
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
শক্তিশালী, ব্যবহার করার অনেক উপায় রয়েছে।
# সমস্ত লগ দেখুন (ডিফল্টভাবে, শুধুমাত্র এই শুরু হওয়া লগ সংরক্ষণ করা হয়)
$ sudo journalctl
# কের্নেল লগ দেখুন (অ্যাপ্লিকেশন লগ প্রদর্শন না করে)
$ sudo journalctl -k
# সিস্টেমের এই বার শুরু হওয়ার লগ দেখুন
$ sudo journalctl -b
$ sudo journalctl -b -0
# পূর্ববর্তী চালু হওয়ার লগ দেখুন (সেটিংস পরিবর্তন করতে হবে)
$ sudo journalctl -b -1
# নির্দিষ্ট সময়ের লগ দেখুন
$ sudo journalctl --since="2012-10-30 18:17:16"
$ sudo journalctl --since "20 min ago"
$ sudo journalctl --since yesterday
$ sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00"
$ sudo journalctl --since 09:00 --until "1 hour ago"
# শেষের 10টি লাইন লগ দেখান
$ sudo journalctl -n
# লগের শেষের নির্দিষ্ট সংখ্যক লাইন দেখান
$ sudo journalctl -n 20
# সর্বশেষ লগগুলি বাস্তব সময়ে স্ক্রোলিং করে দেখান
$ sudo journalctl -f
# নির্দিষ্ট পরিষেবার লগ দেখুন
$ sudo journalctl /usr/lib/systemd/systemd
# নির্দিষ্ট প্রক্রিয়ার লগ দেখুন
$ sudo journalctl _PID=1
# কোনও পথের স্ক্রিপ্টের লগ দেখুন
$ sudo journalctl /usr/bin/bash
নির্দিষ্ট ব্যবহারকারীর লগ দেখুন
$ sudo journalctl _UID=33 --since today
# কোনো ইউনিটের লগ দেখুন
$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today
# একটি ইউনিটের সর্বশেষ লগগুলি রিয়েল টাইমে রোলিং দেখানো
$ sudo journalctl -u nginx.service -f
একাধিক ইউনিটের লগ একত্রিত করে প্রদর্শন করুন।
$ journalctl -u nginx.service -u php-fpm.service --since today
নির্দিষ্ট অগ্রাধিকার (এবং এর উপরের স্তর) এর লগ দেখুন, মোট 8 স্তর রয়েছে।
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug
$ sudo journalctl -p err -b
# লগ ডিফল্ট পৃষ্ঠায় আউটপুট, --no-pager স্বাভাবিক মানের আউটপুটে পরিবর্তন করুন
$ sudo journalctl --no-pager
{"翻译结果":"JSON ফরম্যাটে (এক লাইনে) আউটপুট করুন"}
$ sudo journalctl -b -u nginx.service -o json
```json
{
"翻译": "JSON ফরম্যাটে (একাধিক লাইন) আউটপুট করুন, যা আরও পড়তে সুবিধাজনক।"
}
```
$ sudo journalctl -b -u nginx.serviceqq
-o json-pretty
# লগ ফাইল দ্বারা দখলকৃত ডিস্ক স্পেস প্রদর্শন করুন
$ sudo journalctl --disk-usage
লগ ফাইলের সর্বাধিক স্থান নির্ধারণ করুন
$ sudo journalctl --vacuum-size=1G
# লগ ফাইল সংরক্ষণ কতদিন হবে
$ sudo journalctl --vacuum-time=1years
(সমাপ্ত)
আপনি সাম্প্রতিককালে ব্যবহার করেছেন: