লিনাক্সে কীভাবে একটি পরিষেবা ফাইল তৈরি করবেন

Linakse Kibhabe Ekati Pariseba Pha Ila Tairi Karabena



systemd init সিস্টেম এখন প্রায় সমস্ত লিনাক্স ডিস্ট্রিবিউশনের একটি অংশ। একজন প্রশাসক বা বিকাশকারী হিসাবে, আপনি এমন পরিষেবাগুলি তৈরি করেন যা systemd পরিচালনা করতে পারে। উদাহরণস্বরূপ, আপনি যদি বুটে পরিষেবাগুলি চালু করতে চান বা ম্যানুয়ালি নিয়ন্ত্রণ করতে চান তবে এটি একটি কাস্টম পরিষেবা ফাইলের মাধ্যমে করা যেতে পারে।

এই টিউটোরিয়ালে, আমি কীভাবে লিনাক্সে একটি সিস্টেমড সার্ভিস ফাইল তৈরি করব তা দেখব।







একটি পরিষেবা ফাইল কি

আরও কিছু করার আগে, আসুন একটি সিস্টেমড পরিষেবা ফাইল কী এবং এটি লিনাক্সে কীভাবে তৈরি হয় তা জেনে নেওয়া যাক।



একটি systemd পরিষেবা ফাইলে পরিষেবা পরিচালনা করার জন্য systemd-এর জন্য নির্দেশাবলী সেট করা থাকে। এটিতে সাধারণত তিনটি বিভাগ থাকে:



  • ইউনিট
  • সেবা
  • ইনস্টল করুন

দ্য ইউনিট বিভাগে পরিষেবা সম্পর্কে প্রাথমিক তথ্য রয়েছে যেমন একটি সংক্ষিপ্ত বিবরণ, ডকুমেন্টেশন পৃষ্ঠা এবং নির্ভরতার পথ। দ্য ইনস্টল করুন বিভাগটি ঐচ্ছিক, তবে সাধারণত এটি পরিচালনা করে যে কোন সিস্টেমে পরিষেবাটি সক্ষম করা উচিত।





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

এখানে একটি সাধারণ পরিষেবা ফাইল কাঠামো দেখতে কেমন হয়।



[ ইউনিট ]

নির্দেশিকা 1 = নির্দেশ

নির্দেশিকা2 = নির্দেশ



[ সেবা ]

নির্দেশিকা 1 = নির্দেশ

নির্দেশিকা2 = নির্দেশ



[ ইনস্টল করুন ]

নির্দেশিকা 1 = নির্দেশ

নির্দেশিকা2 = নির্দেশ

এখানে, নির্দেশাবলী হল প্যারামিটার যা তাদের নিজ নিজ ইনপুট নেয়। উদাহরণস্বরূপ, দ বর্ণনা নির্দেশ সেবার নামের একটি স্ট্রিং নেয়। একইভাবে, ExecStart এক্সিকিউটেবলের সম্পূর্ণ পথ বিবেচনা করে।

এর একটি সাধারণ পরিষেবা ফাইল ssh.service নিচে দেওয়া হল।

কিভাবে একটি সার্ভিস ফাইল তৈরি করবেন

একটি সিস্টেমড পরিষেবা তৈরি করতে, মূল নির্দেশাবলী বুঝতে হবে। এই নির্দেশিকায়, আমি প্রয়োজনীয় নির্দেশাবলী কভার করব যা আপনাকে একটি সম্পূর্ণ কার্যকরী পরিষেবা ফাইল তৈরি করতে সাহায্য করতে পারে।

একটি পরিষেবা ফাইল তৈরি করতে একাধিক ধাপ জড়িত, আসুন স্ক্রিপ্ট ফাইল তৈরি করে শুরু করা যাক।

বিঃদ্রঃ: নীচে উল্লিখিত পদ্ধতিটি চালিয়ে যেতে, আপনার অবশ্যই রুট সুবিধা থাকতে হবে।

1. একটি স্ক্রিপ্ট তৈরি করা

প্রাথমিক ধাপে কোড তৈরি করা জড়িত যেটি কার্যকর করা হবে যখন পরিষেবাটি তার কাজ শুরু করবে। এই টিউটোরিয়ালের জন্য, আমি একটি ব্যাশ স্ক্রিপ্ট তৈরি করছি যা লিনাক্স সিস্টেমের আপটাইম এবং মেমরি ব্যবহার সংরক্ষণ করবে।

এর নাম দিয়ে বর্তমান ডিরেক্টরিতে একটি স্ক্রিপ্ট তৈরি করা যাক myscript.sh ন্যানো সম্পাদক ব্যবহার করে।

sudo ন্যানো myscript.sh

এখন, ফাইলে নীচের স্ক্রিপ্ট যোগ করুন এবং এটি টিপে সংরক্ষণ করুন ctrl+x এবং তারপর এবং .

#!/bin/bash

প্রতিধ্বনি '>>এখানে আপনার সিস্টেমের আপটাইম<<' > বাড়ি / নিজেকে / myfile.txt

আপটাইম >> বাড়ি / নিজেকে / myfile.txt

প্রতিধ্বনি '>>এখানে আপনার সিস্টেমের মেমরি ব্যবহার<<' >> / বাড়ি / নিজেকে / myfile.txt

বিনামূল্যে -মি >> বাড়ি / নিজেকে / myfile.txt

ঘুম 60

স্ক্রিপ্টটিতে কয়েকটি ইকো স্ট্রিং রয়েছে এবং আপটাইম এবং বিনামূল্যে আদেশ

দ্য আপটাইম লিনাক্সে কমান্ডটি প্রিন্ট করতে ব্যবহৃত হয় একটি সিস্টেম কতক্ষণ ধরে চলছে এবং কতজন ব্যবহারকারী গত 1, 5 এবং 15 মিনিটের গড় সিস্টেম লোডের সাথে সংযুক্ত রয়েছে।

দ্য বিনামূল্যে কমান্ড সিস্টেমের মেমরি ব্যবহার মুদ্রণ করতে ব্যবহৃত হয়, যখন -মি আউটপুট প্রিন্ট করতে পতাকা ব্যবহার করা হয় এমবি .

একটি টেক্সট ফাইলে তথ্য সংরক্ষণ করার জন্য, আমরা বিশেষ অপারেটর ব্যবহার করি যাকে পুনঃনির্দেশ অপারেটর বলা হয়। দ্য > উল্লেখিত টেক্সট ফাইলে টেক্সট সন্নিবেশ করতে অপারেটর ব্যবহার করা হয়। যাইহোক, যদি ফাইলটি ইতিমধ্যে বিদ্যমান না থাকে তবে এটি তৈরি করা হবে। যখন >> ফাইলে টেক্সট যোগ করতে অপারেটর ব্যবহার করা হয়। দ্য ঘুম কমান্ডটি সর্বনিম্ন এক মিনিটের জন্য পরিষেবার কার্যকলাপ বজায় রাখতে ব্যবহার করা হয়।

এখন, প্রয়োজনীয় অনুমতি প্রদান করে স্ক্রিপ্টটি কার্যকর করুন।

sudo chmod +x myscript.sh

স্ক্রিপ্টে এখন এক্সিকিউশন পারমিশন আছে, আসুন পরবর্তী বিভাগে এগিয়ে যাই।

বিঃদ্রঃ: পরিষেবা ফাইলটিকে ত্রুটি-মুক্ত করতে, ব্যাশ স্ক্রিপ্টে ফাইলের পরম পাথ ব্যবহার করুন।

2. একটি .service ফাইল তৈরি করা

এর পরে, এর সাথে একটি পরিষেবা ফাইল তৈরি করুন .পরিষেবা এক্সটেনশন পরিষেবা ফাইলটি তৈরি করতে হবে /etc/systemd/system ডিরেক্টরি প্রথমে, ব্যবহার করে এই ডিরেক্টরিতে নেভিগেট করুন সিডি আদেশ

সিডি / ইত্যাদি / systemd / পদ্ধতি

আপনি যেকোন ডিরেক্টরিতে পরিষেবা ফাইল তৈরি করতে পারেন, এবং পরে সেই ফাইলটিকে এই ডিরেক্টরিতে সরান, তবুও।

আমি এর সাথে একটি পরিষেবা ফাইল তৈরি করছি myservice.service নাম

sudo ন্যানো myservice.service

এখন, ফাইলে নিম্নলিখিত লাইন যোগ করুন।

[ ইউনিট ]

বর্ণনা =আমার সেবা

[ সেবা ]

টাইপ = সরল

ExecStart = / বিন / বাশ / বাড়ি / নিজেকে / script.sh

আবার শুরু = ব্যর্থতা

[ ইনস্টল করুন ]

WantedBy = multi-user.target

মনে রাখবেন যে [ইউনিট], [পরিষেবা], এবং [ইনস্টল] হয় কেস-সংবেদনশীল . পরিষেবা ফাইল কাজ করবে না যদি তাদের মধ্যে যেকোনও ভুলভাবে উল্লেখ করা হয়, যেমন [UNIT], বা [SERVICE]।

পরিষেবার নাম হিসাবে উল্লেখ করা হয়েছে আমার সেবা মধ্যে বর্ণনা এর নির্দেশনা [ইউনিট] অধ্যায়.

দ্য টাইপ সেবার হয় সহজ মধ্যে [পরিষেবা] বিভাগ, যা ডিফল্ট প্রকার। কাঁটাচামচ , এক সুযোগ , অবহিত , dbus , এবং নিষ্ক্রিয় হল অন্যান্য ধরনের কিছু।

আপনি যদি পরিষেবাটিকে ব্যবহারকারী-নির্দিষ্ট করতে চান, তাহলে ব্যবহারকারী নির্দেশিকা ব্যবহারকারীর ব্যবহারকারীর নামের সাথেও ব্যবহার করা যেতে পারে। এই নির্দেশিকা ব্যবহার করে পরিষেবা ব্যবহারকারীর অনুমতি নির্ভর করবে।

যখন ExecStart নির্দেশে এক্সিকিউটেবলের সম্পূর্ণ পথ রয়েছে। উপরের উদাহরণে, স্ক্রিপ্ট ফাইল myscript.sh এ সংরক্ষণ করা হয় /বাড়ি/স্যাম/ ডিরেক্টরি এই নির্দেশটি আসলে পরিচালনা করে যে যখন সিস্টেমড দ্বারা একটি পরিষেবা চালু করা হয় তখন কী চালানো হবে। যদি কমান্ডের সম্পূর্ণ পাথ নির্দিষ্ট না করা হয়, তবে এটি স্বয়ংক্রিয়ভাবে পরম পাথ ঠিক করার জন্য সমাধান করা হবে যেমন /usr/local/bin , /usr/bin/, এবং /বিন . যতক্ষণ পর্যন্ত তারা স্ট্যান্ডার্ড কমান্ড ডিরেক্টরিতে থাকে ততক্ষণ এক্সিকিউটেবল নামটি ব্যবহার করা পুরোপুরি সূক্ষ্ম, তবে, অন্যথায় পরম পথটি উল্লেখ করুন। মনে রাখবেন যে একাধিক কমান্ড ব্যবহার করা যেতে পারে যেগুলি সেমিকোলন (;) দ্বারা পৃথক করা হয়।

দ্য [ইনস্টল] বিভাগ ঐচ্ছিক; যাইহোক, এটি নির্দেশ করে যে পরিষেবাটি কীভাবে সক্রিয় করা হয়েছে। দ্য WantedBy নির্দেশিকা রান-স্তরের টার্গেট ফাইলগুলিকে পরামিতি হিসাবে নেয়। বিভিন্ন টার্গেট ফাইল সিস্টেমের বিভিন্ন রান-লেভেল নির্দেশ করে যেমন যন্ত্র বন্ধ , উদ্ধার , বহু-ব্যবহারকারী , গ্রাফিক্যাল , এবং রিবুট .

দ্য multi-user.target মানে যখন সিস্টেমটি মাল্টি-ইউজার নন-গ্রাফিকাল সেশনের অনুমতি দেওয়ার জন্য একটি অবস্থায় থাকবে তখন পরিষেবাটি সক্রিয় করা হবে।

3. পরিষেবা সক্রিয় করা

পরিষেবাটি সক্রিয় করতে, প্রথমে, সিস্টেমড কনফিগারেশনগুলি ব্যবহার করে পুনরায় লোড করুন systemctl ইউটিলিটি

sudo systemctl ডেমন-রিলোড

এর পরে, ব্যবহার করে আবার পরিষেবাটি সক্রিয় করুন systemctl সঙ্গে আদেশ সক্ষম .

sudo systemctl সক্ষম myservice.service

যাচাই করতে, ব্যবহার করে পরিষেবার স্থিতি পরীক্ষা করুন systemctl অবস্থা আদেশ

পরিষেবাটি সফলভাবে চলছে৷

এখন, টেক্সট ফাইল পড়া যাক myfile.txt সেবা তৈরি করা হয়েছে /বাড়ি ডিরেক্টরি

সাধারণ ব্যবহারকারীর জন্য কীভাবে একটি সিস্টেমড পরিষেবা ফাইল তৈরি করবেন

একজন সাধারণ ব্যবহারকারীর জন্য পরিষেবা ফাইল তৈরি করার পদ্ধতিটি প্রশাসকের দ্বারা একটি পরিষেবা ফাইল তৈরি করার পদ্ধতির অনুরূপ। তবে, সাধারণ ব্যবহারকারীদের জন্য পরিষেবা ফাইল সংরক্ষণ করার ডিরেক্টরি আলাদা। সাধারণ ব্যবহারকারীদের অবশ্যই তাদের পরিষেবা ফাইলগুলিকে তে স্থাপন করতে হবে ~/.config/systemd/user . এই ডিরেক্টরিটি ব্যবহার করে তৈরি করা আবশ্যক mkdir আদেশ

mkdir ~ / .config / systemd / ব্যবহারকারী

একজন সাধারণ ব্যবহারকারী দ্বারা পরিষেবাটি সক্রিয় করতে -ব্যবহারকারী কমান্ড দিয়ে ঢোকানো হয় systemctl পরিবর্তে sudo .

systemctl -- ব্যবহারকারী ডেমন-রিলোড

systemctl -- ব্যবহারকারী সক্ষম SERVICE-NAME.service

systemctl -- ব্যবহারকারী স্থিতি SERVICE-NAME.service

দ্য -ব্যবহারকারী বিকল্পটি ব্যবহারকারীর সিস্টেমড পরিষেবা ফাইলগুলি পরিচালনা করতে ব্যবহৃত হয়।

কিভাবে সার্ভিস ফাইল রিমুভ করবেন

পরিষেবা ফাইল সরাতে, প্রথমত, পরিষেবাটি বন্ধ করতে হবে।

sudo systemctl SERVICE-NAME.service বন্ধ করুন

ব্যবহার করে স্থিতি পরীক্ষা করুন systemctl অবস্থা পরিষেবা বন্ধ হয়েছে কিনা তা জানতে কমান্ড। তারপর পরিষেবা ফাইলটি ব্যবহার করে সরান rm আদেশ

sudo rm / ইত্যাদি / systemd / পদ্ধতি / SERVICE-NAME.service

এখন, পুনরায় লোড করুন systemd কনফিগারেশন.

sudo systemctl ডেমন-রিলোড

উপসংহার

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