ডিমন ধারণাটি প্রসেসগুলির সাথে সংযুক্ত থাকে , ফাইল নয় । এই কারণে, "ফাইল সিস্টেমে ডেমনগুলি খুঁজে পাওয়ার" কোনও ধারণা নেই। ধারণাটি একটু পরিষ্কার করার জন্য: একটি প্রোগ্রাম একটি এক্সিকিউটেবল ফাইল (এর আউটপুটে দৃশ্যমান 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 ^?
network-manager
, নাNetworkManager
।