সমস্ত চলমান ডেমনগুলি কীভাবে তালিকাভুক্ত করবেন?


32

আমার প্রশ্ন থেকে , এটি স্পষ্ট ছিল যে আমি খুব সহজেই কোনও ডেমন বৈশিষ্ট্যগুলি নির্ধারণ করতে পারি না I আমি বিভিন্ন নিবন্ধে এবং বিভিন্ন ফোরামে পড়েছি যে service --status-allকমান্ডটি আমার সিস্টেমে সমস্ত ডেমনকে তালিকাবদ্ধ করতে ব্যবহার করা যেতে পারে। তবে আমি মনে করি না যে কমান্ডটি সমস্ত ডিমনকে তালিকাভুক্ত করছে কারণ NetworkManager, একটি ডেমন যা বর্তমানে আমার Ubuntu 14.04সিস্টেমে চলছে তা কমান্ড দ্বারা তালিকাভুক্ত নয়। চলমান ডিমনগুলির তালিকা তৈরি করার জন্য কিছু আদেশ আছে কি না filesystemনিজেই থেকে ডিমনগুলি খুঁজে পাওয়ার কোনও উপায় আছে ?


আপনি কি নিশ্চিত যে এটি তালিকাভুক্ত নয়? আপনি কিভাবে পরীক্ষা করছেন? আমি আমার ডেবিয়ানে এটি দেখতে পাচ্ছি। মনে রাখবেন নামটি network-manager, না NetworkManager
টেরডন

হ্যাঁ। আমি নিশ্চিত. নেটওয়ার্ক শব্দটি সম্পর্কিত কোনও কিছুই তালিকাভুক্ত নয়। এছাড়াও এটি সূচনা করে anacronযা এর init স্ক্রিপ্টে ডেমন হিসাবে উল্লেখ করা হয়নি।
জ্যাকজ

অ্যানাক্রন ডেমন না হওয়া শব্দার্থবিজ্ঞানের প্রশ্ন কারণ এটি ক্রমাগতভাবে চালিত হয় না। এটি এখনও পরিষেবা হিসাবে চালিত হয় যা আপনি সাধারণত ডিমন হিসাবে উল্লেখ করেন। দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন এবং i) আপনি কোন উবুন্টু চালাচ্ছেন এবং ii) "ডেমন" বলতে আপনার অর্থ কী বোঝায় তা বলুন। এখানে আপনার চূড়ান্ত উদ্দেশ্য কি?
টেরডন

আমি অনুমান করি যে ব্যাকগ্রাউন্ডে চলমান কোনও পরিষেবা একটি ডেমন। আমি উল্লেখ করেছি anacronকারণ এটি বলা হয়েছিল /etc/init.d/anacronযে এটি ডেমন নয়। আমার উদ্দেশ্যটি হ'ল C++আমার সিস্টেমে চলমান সমস্ত ডেমনকে তালিকাবদ্ধ করার জন্য একটি প্রোগ্রাম লিখে । তার জন্য আমার বিশদটি জানতে কোন ফাইলগুলি বিশ্লেষণ করতে হবে তা জানতে হবে।
জ্যাকজ

1
ঠিক আছে, আপনি যদি ডেমনগুলি পরিষেবা হিসাবে সংজ্ঞায়িত করেন তবে আপনার service --status-allযা প্রয়োজন তা হল। উবুন্টু নেটওয়ার্কম্যানেজারকে অন্যরকম আচরণ করবে বলে মনে হচ্ছে। আমি উভয় networkingএবং দেবিয়ান network-managerআউটপুট পেতে services --status-allকিন্তু শুধুমাত্র networkingউবুন্টু। আমি মনে করি আপনাকে "ডেমন" বলতে আসলে কী বোঝানো হয়েছে তা নির্ধারণ করতে হবে।
টেরডন

উত্তর:


52

ডিমন ধারণাটি প্রসেসগুলির সাথে সংযুক্ত থাকে , ফাইল নয় । এই কারণে, "ফাইল সিস্টেমে ডেমনগুলি খুঁজে পাওয়ার" কোনও ধারণা নেই। ধারণাটি একটু পরিষ্কার করার জন্য: একটি প্রোগ্রাম একটি এক্সিকিউটেবল ফাইল (এর আউটপুটে দৃশ্যমান ls); একটি প্রক্রিয়া সেই প্রোগ্রামটির একটি উদাহরণ (আউটপুটে দৃশ্যমান ps)।

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

$ ps -eo 'tty,pid,comm' | grep ^?

ttyআউটপুট ক্ষেত্র রয়েছে "?" যখন প্রক্রিয়াটির কোনও নিয়ন্ত্রণকারী টার্মিনাল নেই।

আপনার সিস্টেমটি যখন গ্রাফিকাল পরিবেশ চালায় তখন এখানে বড় সমস্যা আসে। যেহেতু জিইউআই প্রোগ্রামগুলি (যেমন ক্রোমিয়াম) কোনও টার্মিনালের সাথে সংযুক্ত থাকে না, সেগুলি আউটপুটে উপস্থিত হয়। একটি স্ট্যান্ডার্ড সিস্টেমে, যেখানে রুট গ্রাফিকাল প্রোগ্রামগুলি চালায় না, আপনি কেবল আগের তালিকাটি রুটের প্রক্রিয়াগুলিতে সীমাবদ্ধ রাখতে পারেন। এটি ps' -Uসুইচ ' ব্যবহার করে অর্জন করা যেতে পারে ।

$ ps -U0 -o 'tty,pid,comm' | grep ^?

তবুও, এখানে দুটি সমস্যা দেখা দেয়:

  • যদি রুট গ্রাফিকাল প্রোগ্রামগুলি চালিত হয় তবে তারা প্রদর্শিত হবে।
  • মূল অধিকার ছাড়াই ডেমোন চলমান হবে না। মনে রাখবেন যে বুট সময় শুরু হওয়া ডেমোনগুলি সাধারণত মূল হিসাবে চলমান।

মূলত, আমরা একটি নিয়ন্ত্রণকারী টার্মিনাল ছাড়া সমস্ত প্রোগ্রাম প্রদর্শন করতে চাই , তবে জিইউআই প্রোগ্রামগুলি নয় । আমাদের জন্য সৌভাগ্য যে, তালিকায় গুই প্রসেস করার জন্য একটি প্রোগ্রাম: xlsclients! এসএমএলের এই উত্তরটি আমাদের সমস্ত জিইউআই প্রোগ্রাম তালিকাভুক্ত করার জন্য এটি কীভাবে ব্যবহার করতে হবে তা আমাদের জানায়, তবে আমরা এগুলি বিপরীত করতে হবে, কারণ আমরা সেগুলি বাদ দিতে চাই। এটি --deselectস্যুইচ ব্যবহার করে করা যেতে পারে।

প্রথমত, আমরা সমস্ত জিইউআই প্রোগ্রামগুলির একটি তালিকা তৈরি করব যার জন্য আমাদের চলমান প্রক্রিয়াগুলি রয়েছে। আমি যে উত্তরটি কেবল সংযুক্ত করেছি, তা থেকে এটি ব্যবহার করে করা হয় ...

$ xlsclients | cut -d' ' -f3 | paste - -s -d ','

এখন, psএকটি -Cসুইচ আছে যা আমাদের কমান্ড নাম দ্বারা নির্বাচন করতে পারবেন। আমরা সবেমাত্র আমাদের কমান্ডের তালিকা পেয়েছি, সুতরাং এটি psকমান্ড লাইনে ইনজেক্ট করুন । মনে রাখবেন যে আমি --deselectপরে আমার নির্বাচনটি উল্টাতে ব্যবহার করছি ।

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect

এখন, আমাদের কাছে সমস্ত নন-জিইউআই প্রক্রিয়াগুলির একটি তালিকা রয়েছে। আসুন আমাদের "টিটিওয়াই সংযুক্ত নেই" নিয়মটি ভুলে যাবেন না। এর জন্য, প্রতিটি প্রক্রিয়া (এবং এর সম্পূর্ণ কমান্ড লাইন) -o tty,argsআউটপুট দেওয়ার ttyজন্য আমি পূর্ববর্তী লাইনে যুক্ত করব :

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect -o tty,args | grep ^?

চূড়ান্ত grepসমস্ত লাইনগুলি ক্যাপচার করে যা "?" দিয়ে শুরু হয়, অর্থাত্ একটি নিয়ন্ত্রণকারী টিটিআই ছাড়াই সমস্ত প্রক্রিয়া। এবং সেখানে আপনি যান! এই চূড়ান্ত লাইনটি আপনাকে নিয়ন্ত্রণকারী টার্মিনাল ব্যতীত সমস্ত নন-জিইউআই প্রক্রিয়া দেয়। মনে রাখবেন আপনি উদাহরণস্বরূপ, এখনও এটি উন্নতি করতে পারেন কার্নেল থ্রেডগুলি (যা প্রক্রিয়া নয়) বাদ দিয়ে ...

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,args | grep ^?

... বা আপনার পড়ার জন্য তথ্যের কয়েকটি কলাম যুক্ত করে:

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,uid,pid,ppid,args | grep ^?

লিনাক্স ভার্চুয়াল ফাইল সিস্টেম, প্রোফসে অনেক তথ্য রাখে। সুতরাং এটি সম্ভব "ফাইল সিস্টেমে ডেমনগুলি সন্ধান করা" !!!
ম্যাসিমো

0

আমি "ওল্ড" সিস্টেভ ডিআইডি-র জন্য লিখেছিলাম, আপনাকে এটি পরীক্ষা করতে হবে যে এটি আপনার ডিস্ট্রোতে কাজ করছে কিনা।

ভাল ভূতগুলি / etc / initd তে ভাল লিখিত স্টার্টআপ স্ক্রিপ্ট থাকে

রানলেভেল পরিবর্তন করার সময়, ডিআইএন চলমান ডেমনগুলি কীভাবে জানতে পারে?

এটি ডিরেক্টরিতে তাদের নামগুলি সন্ধান করে

প্রথমেই / var / লক / subsys

তাই আপনি যা করতে পারেন

সেখান থেকে নাম তালিকা পেতে

সমস্ত চলমান প্রক্রিয়াগুলি স্ক্যান করুন এবং তালিকার মধ্যে নামটি আছে কিনা তা পরীক্ষা করুন: বিঙ্গো!

সমস্ত প্রক্রিয়া স্ক্যান করতে: প্রতিটি উপ-ডিরেক্টরি তালিকাভুক্ত করুন

জন্য / proc

যদি এর নামটি সংখ্যা হয় তবে এটি চলমান প্রক্রিয়াটির পিড।

উদাহরণস্বরূপ, পিড 1234 সহ প্রক্রিয়াটির স্থিতি এই ফাইল

জন্য / proc / 1234 / স্থিতি

এটি খুলুন এবং প্রথম লাইন পান, "নাম:" দিয়ে শুরু করুন

দেখ

http://man7.org/linux/man-pages/man5/proc.5.html

https://linuxexplore.com/2014/03/19/use-of-subsystem-lock-files-in-init-script/

(দুষ্টু বিন্যাসের জন্য দুঃখিত, আমি আমার সেল ফোন থেকে লিখছি ...)

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