Systemctl init.d এবং পরিষেবার মধ্যে পার্থক্য


39

আমি লিনাক্সে নতুন এবং আমি একটি অ্যামাজন লাইটসেল উদাহরণ (উবুন্টু 16.04 এলটিএস) ব্যবহার করে নিজেকে পরীক্ষা করে নিচ্ছি।

আমি যে সমস্ত গাইড জুড়ে এসেছি সেগুলির মধ্য দিয়ে I বিশেষত এগুলি;

sudo systemctl status apache2.service
sudo /bin/systemctl status apache2.service
sudo /etc/init.d/apache2 status
sudo service apache2 status

উপরের সমস্ত কমান্ড কাজ করে।

  1. আমি কি অন্য আদেশের চেয়ে একটি আদেশ পছন্দ করব?
  2. যদি হ্যাঁ তবে কেন?
  3. আমার সম্পর্কে সচেতন হওয়ার মতো আরও কোনও আদেশ রয়েছে কি?

আমি স্ট্যাটাস অপশনটি ব্যবহার করতে চাইলে মনিটে init.d ব্যবহার করার কারণে সমস্যার সৃষ্টি হয়েছিল (স্ট্যাটাসটি এটি হবে যখন অনলাইনটি প্রকৃতপক্ষে ছিল তখন পরিষেবাটি অফলাইনে থাকবে - মণিত পুনরায় চালু করবেন)। মনিট কোড inid.d থেকে / বিন / systemctl এ স্থির করে নিন।

দেখে মনে হচ্ছে যে init.d ব্যবহার করে অন্যেরা কী ঘটেছিল সে সম্পর্কে আরও তথ্য সরবরাহ করে। যদি আমার অন্য একটি কমান্ড ব্যবহার করা উচিত হয় তবে তাদের কী করা হয়েছিল সে সম্পর্কে আরও তথ্য প্রদর্শন করা সম্ভব?

ubuntu@ip-172-26-12-245:~$ sudo systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ sudo /bin/systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ sudo /etc/init.d/pure-ftpd restart
[ ok ] Restarting pure-ftpd (via systemctl): pure-ftpd.service.
ubuntu@ip-172-26-12-245:~$ sudo service pure-ftpd restart
ubuntu@ip-172-26-12-245:~$

আমি আগাম সকলকে ধন্যবাদ জানাতে চাই যারা এই প্রশ্নের পড়তে এবং উত্তর দিতে সময় নিয়েছে।


লিনাক্সে প্রায়শই একটি ক্রিয়া সম্পাদনের একাধিক উপায় থাকে। এর চেয়ে ভাল বা খারাপ বা সঠিক বা ভুলের একটিও নেই। ব্যক্তিগতভাবে আমি স্বল্পতম টাইপ করে এটি ব্যবহার করি। উবুন্টু সিস্টেমে পরিবর্তিত হওয়ায় এই কমান্ডগুলির অনেকগুলি সিএম লিঙ্ক বা পিছনে সামঞ্জস্য হতে পারে।
প্যান্থার

systemctlপছন্দসই বাক্য গঠন এবং serviceপশ্চাদপটে সামঞ্জস্য হিসাবে সরবরাহ করা হয়। /etc/init.d/pure-ftpdবা অনুরূপগুলি সরাসরি স্টার্ট / স্টপ স্ক্রিপ্টগুলি কল করছে।
প্যান্থার

উত্তর:


57

শুরু করার জন্য, এখানে পুরো ইতিহাস এবং লড়াই থেকে শুরু SysVInitকরার মধ্যে লড়াই রয়েছে SystemD। যদিও এই উত্তরটি একত্রে ভেঙে দেওয়ার চেষ্টা করার পরিবর্তে, আমি আপনাকে ইতিহাসের আরও বিশদ পাশাপাশি বিষয়টির একটি নির্দিষ্ট নিবন্ধের জন্য কয়েকটি গুগল ভেনচারিংয়ে উল্লেখ করব:

http://www.tecmint.com/systemd-replaces-init-in-linux/

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

আপনি বিশেষভাবে তালিকাভুক্ত প্রত্যেককে কভার করতে:

  1. sudo systemctl status apache2.service

SystemDহ্যান্ডলিং পরিষেবাগুলির ক্ষেত্রে এটিই নতুন পদ্ধতি। এগিয়ে চলার সাথে সাথে লিনাক্সের অ্যাপ্লিকেশনগুলি সিস্টেমড পদ্ধতি ব্যবহারের জন্য ডিজাইন করা হয়েছে, অন্য কোনও নয়।

  1. sudo /bin/systemctl status apache2.service

এটি পূর্ববর্তী আদেশ হিসাবে একই জিনিস। এক্ষেত্রে একমাত্র পার্থক্য হ'ল এটি শেলটির $PATHপরিবেশ পরিবর্তনশীলের উপর নির্ভর করে কমান্ডটি খুঁজে পাচ্ছে না, এটি কমান্ডের পথটি অন্তর্ভুক্ত করে স্পষ্টভাবে কমান্ডকে তালিকাবদ্ধ করছে।

  1. sudo /etc/init.d/apache2 status

এটি SysVInitকোনও পরিষেবাতে কল করার আসল পদ্ধতি। আরম্ভের স্ক্রিপ্টগুলি কোনও পরিষেবার জন্য লেখা এবং এই ডিরেক্টরিতে স্থাপন করা হত। যদিও এই পদ্ধতিটি এখনও অনেকের দ্বারা ব্যবহৃত হয়, serviceসেই আদেশটি যা পরিষেবাগুলিতে কল করার এই পদ্ধতিটি প্রতিস্থাপন করেছিল SysVInit। এর সাথে আরও নতুন সিস্টেমে এর জন্য কিছু লিগ্যাসি কার্যকারিতা রয়েছে SystemDতবে বেশিরভাগ নতুন প্রোগ্রামগুলিতে এটি অন্তর্ভুক্ত হয় না এবং সমস্ত পুরানো অ্যাপ্লিকেশন থ্রি স্ক্রিপ্টগুলি এতে কাজ করে না।

  1. sudo service apache2 status

এটি SysVInitপরিষেবাগুলির জন্য সিস্টেমে ব্যবহৃত প্রাথমিক সরঞ্জাম ছিল । কিছু ক্ষেত্রে এটি কেবল /etc/init.d/স্ক্রিপ্টগুলির সাথে সংযুক্ত ছিল , তবে অন্যান্য ক্ষেত্রে এটি অন্য কোথাও সঞ্চিত একটি স্ক্রিপ্টে গিয়েছিল। পরিষেবা নির্ভরতা হ্যান্ডলিংয়ে একটি মসৃণ রূপান্তর সরবরাহ করার উদ্দেশ্যে এটি করা হয়েছিল।


অবশেষে, আপনি আদেশগুলি থেকে কীভাবে আরও তথ্য পাবেন তা জানতে চাওয়ার উল্লেখ করেছেন, যেহেতু কেউ কেউ অন্যের চেয়ে বেশি তথ্য সরবরাহ করে। এটি প্রায়শই সর্বদা অ্যাপ্লিকেশন এবং কীভাবে তারা তাদের init বা পরিষেবা ফাইল ডিজাইন করে তা নির্ধারিত হয়। সাধারণ নিয়ম হিসাবে যদিও, এটি নিঃশব্দে সম্পন্ন হলে এটি সফল ছিল was তবে একটি start, stopবা restart, যাচাই করতে আপনি statusসাব-কমান্ডটি এটি কীভাবে করছে তা দেখতে ব্যবহার করতে পারেন । আপনি statusএকটি পুরাতন init স্ক্রিপ্টে একটি কমান্ড ভুল বলে উল্লেখ করেছেন । এটি একটি বাগ যা অ্যাপ্লিকেশন বিকাশকারীদের দেখতে হবে। তবে, যেহেতু থ্রি স্ক্রিপ্টগুলি পরিষেবা পরিচালনা করার অবহেলা পদ্ধতিতে পরিণত হচ্ছে, ততক্ষণ তারা ত্রুটিটিকে উপেক্ষা করতে পারে যতক্ষণ না তারা পুরোপুরি init স্ক্রিপ্ট অপসারণ না করে। দ্যsystemctl status সর্বদা সঠিকভাবে কাজ করা উচিত অন্যথায় অ্যাপ্লিকেশন বিকাশকারীদের সাথে একটি বাগ লগ করা উচিত।


আপনার বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। আমি উত্তরের জন্য গুগলিং করছি তবে এটি আমাকে সত্যই বিভ্রান্ত করেছে, তাই আমি এটি এখানে পোস্ট করেছি। আমি এটিও দেখতে পাই যে sudo systemctl স্থিতি অ্যাপাচি 2 কাজ করে (sudo systemctl স্থিতি apache2.service) এর পরিবর্তে। .সেবার অংশটি পূর্বোক্ত করার কি কোনও ক্ষতি আছে?
ওয়াকাস তারিক

@ ওয়াকাসটারিক কোনও সমস্যা নেই! এই দু'জনেরই কাজ করা উচিত, systemctlপরিষেবা ফাইলগুলি কোথায় সংরক্ষণ করা হবে সেই ডিরেক্টরিগুলি অনুসন্ধান করবে এবং যদি এটি খুঁজে পায় তবে আপনার জন্য "। পরিষেবা" যুক্ত করবে। সুতরাং উদাহরণস্বরূপ, আপনি কেবলমাত্র লেখার পরে একবার যদি ট্যাব হিট করেন তবে sudo systemctl status apache2এটি .serviceআপনার জন্য যোগ করে তা সম্পূর্ণ করা উচিত । যদি একাধিক অ্যাপাচি 2 সিস্টেস্টল ফাইল থাকে (যেমন .serviceএবং .targetআপনি দুবার ট্যাবে আঘাত করতে চান যাতে এটি আপনাকে সমস্ত উপলভ্য বিকল্প দেখায়
টপহ্যাট

বুঝেছি. আপনার উত্তর এবং আপনার সময় জন্য ধন্যবাদ।
ওয়াকাস তারিক

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