কোন প্রক্রিয়াতে ডিসপ্লে ভেরিয়েবল সেট রয়েছে তা কীভাবে জানবেন?


8

কখনও কখনও আমি প্রদর্শনের ক্ষেত্রে কিছু সমস্যার মুখোমুখি হই এবং বেশিরভাগ ক্ষেত্রে আমি কোন ফাইল বা প্রক্রিয়াগুলি ডিআইএসএল এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে তা জানতে চাই।

সুতরাং DISPLAY সেট থাকা সমস্ত প্রক্রিয়া কীভাবে তালিকাভুক্ত করবেন?

উত্তর:


13

আমি অনেক অনুসন্ধান এবং চেষ্টা করার পরে এই আদেশটিতে পৌঁছেছি:

for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '(.*)' $file/stat; done | sed 'N;s/\n/\t/'

আউটপুট একটি নমুনা:

DISPLAY=:0  (unity-files-dae)
DISPLAY=:0  (unity-music-dae)
DISPLAY=:0  (unity-lens-vide)
DISPLAY=:0  (zeitgeist-daemo)
DISPLAY=:0  (zeitgeist-fts)
DISPLAY=:0  (zeitgeist-datah)
DISPLAY=:0  (cat)
DISPLAY=:0  (unity-scope-vid)
DISPLAY=:0  (unity-musicstor)
DISPLAY=:0  (dconf-service)
DISPLAY=:0  (gdu-notificatio)
DISPLAY=:0  (telepathy-indic)
DISPLAY=:0  (mission-control)
DISPLAY=:0  (goa-daemon)
DISPLAY=:0  (VBoxXPCOMIPCD)

1
সুন্দর সমাধান। আপনি কি দয়া করে পর্দার পিছনে কী ঘটে যায় তার জন্য কিছু ব্যাখ্যা যুক্ত করতে পারেন? এছাড়াও, আউটপুট ক্রপ হয়, সম্পূর্ণ প্রক্রিয়া নাম পেতে আমি কী করতে পারি?
দানাতেলা

1
এই কমান্ডটি / proc ডিরেক্টরিতে পুনরাবৃত্তভাবে অনুসন্ধান করে। DISPLAYপ্রতিটি ফাইলের জন্য গ্রেপ । এই ফাইলগুলি সত্যই প্রক্রিয়াগুলিতে চলছে তাই শব্দযুক্ত প্রতিটি ফাইলের DISPLAYঅর্থ এই প্রক্রিয়াটি এটি ব্যবহার করছে। আপনি পুরো প্রক্রিয়াটির নামটি পাবেন না কারণ আউটপুটে থাকা নামগুলি ফাইলের নাম প্রতিষ্ঠিত আয়ন হয় /procতাই কেবল প্রস্তাবিতের চেয়ে বেশি আপনি জানতে পারবেন না।
মেথাক্স

1
প্লীজ করুন, পরিবর্তে আপনার উত্তর সম্পাদনা করুন এবং কেবলমাত্র আপনার পোস্টটি আপডেট করেছেন তা ব্যবহারকারীকে জানান।
ব্রায়াম

আমি ডিসপ্লে এনভির ভেরিয়েবলটি গণ্ডগোল করেছিলাম এবং এটি পরিবর্তন করার আগে আমি DISPLAY এর মূল্যবোধগুলি কী তা জানতে চেয়েছিলাম, আমি কোনও কম্যড সম্পর্কে জানি না যা আমাকে তার ইতিহাস সম্পর্কে বলতে পারে, তাই এই আদেশটি ব্যবহার করে আমি খুঁজে পেলাম যে পূর্ববর্তী প্রক্রিয়াগুলি ছিল কোন DISPLAY মান এবং আমার সমস্যা সমাধান করা হয়েছিল ব্যবহৃত।
ইয়্যাক্স

1

মেথাক্স স্ক্রিপ্টে একটি ছোট পরিবর্তন করে আমরা DISPLAY ভেরিয়েবলটি ব্যবহার করে প্রক্রিয়াগুলির পিআইডি পেতে পারি।

for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '[0-9]* (.*)' $file/stat; done | sed 'N;s/\n/\t/' |column -t |sort -n -k2

আউটপুটটি হ'ল:

DISPLAY=:0  590    (lxsession)
DISPLAY=:0  645    (unclutter)
DISPLAY=:0  705    (gvfsd)
DISPLAY=:0  710    (gvfsd-fuse)
DISPLAY=:0  727    (openbox)
DISPLAY=:0  729    (lxpolkit)
DISPLAY=:0  732    (lxpanel)
DISPLAY=:0  734    (pcmanfm)
DISPLAY=:0  772    (menu-cached)
DISPLAY=:0  781    (gvfs-udisks2-vo)
DISPLAY=:0  791    (gvfs-gphoto2-vo)
DISPLAY=:0  795    (gvfs-mtp-volume)
DISPLAY=:0  799    (gvfs-afc-volume)
DISPLAY=:0  804    (gvfs-goa-volume)
DISPLAY=:0  816    (gvfsd-trash)
DISPLAY=:0  21053  (npm)
DISPLAY=:0  21102  (sh)
DISPLAY=:0  21103  (sh)
DISPLAY=:0  21104  (node)
DISPLAY=:0  21110  (electron)
DISPLAY=:0  21112  (electron)
DISPLAY=:0  21149  (electron)
DISPLAY=:0  21154  (electron)
DISPLAY=:0  21180  (rec)

0

কিছু সুন্দর নিফটি কমান্ড লাইন স্ক্রিপ্টিং আছে! আমি অন্য স্ক্রিপ্টে একটি অনুলিপি তৈরি করতে যাচ্ছি যদি আমাকে অন্য কিছু জানার জন্য এটি হ্যাক করতে হয়।

স্থানীয়ভাবে সমস্ত বর্তমান প্রক্রিয়াগুলি যা আপনি স্থানীয় মেশিনে লগইন পোস্টের পরে চালিত প্রোগ্রামগুলির সাথে সামঞ্জস্য করে তা আপনার প্রথম উন্মুক্ত পিটিএস (সিউডো-টার্মিনাল সেশন) কনসোলের মতো একই ডিসপ্লে ভেরিয়েবল বহন করবে।

উদাহরণস্বরূপ আপনি যখন আপনার প্রথম টার্মিনাল সেশনটি (জিনোম-টার্মিনাল) খোলেন এবং কারা বা ডাব্লু কমান্ডটি চালান আপনি কিছু আউটপুট লক্ষ্য করবেন:

$ who

yourusername   :0        2015-06-08 14:05 (:0)
yourusername   pts/0     2015-06-08 14:22 (:0)

বা কিছু লোকেরা দেখতে দেখতে এটি দেখতে পারে (তবে এটি আপনার ক্ষেত্রে নয়)

yourusername   :0        2015-06-08 14:05 (:0)
yourusername   pts/0     2015-06-08 14:22 (:0.0)

লাইট ডিসপ্লে ম্যানেজার ব্যবহার করে যদি ডিআইএসএল ভেরিয়েবলটি শেলগুলির লগইন সম্পাদনের জন্য পৃথকভাবে সেট করা থাকে (উদাহরণস্বরূপ: 0.0), তবে ডিআইএসআইএল-এর পরিবেশগত পরিবর্তনশীল প্রথম উন্মুক্ত পিটিএস-এর পোস্ট-লগইন ডিসপ্লে ভেরিয়েবলের মতো একই ডিসপ্লে ভেরিয়েবলটি অর্জন করতে পারে (: ০.০), তবে হোস্ট ভেরিয়েবল, লগ ইন করার পরেও (: 0) হবে।

ডিআইআইএসএল ভেরিয়েবল প্রতিধ্বনিত করে বা নীচে দেখানো হিসাবে সেট কম পাইপ চালানো:

:~$ echo $DISPLAY

অথবা

:~$ set | less

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

আপনি যে স্ক্রিপ্টটি পোস্ট করেছেন তার আউটপুট পরামর্শ দেয় যে আপনার প্রথম উন্মুক্ত pts এর ক্ষেত্রে আপনার ডিসপ্লে ম্যানেজারের লগইনের মতো একই ডিসপ্লে ভেরিয়েবলটি থাকতে পারে: 0।

এখন দ্বিতীয় উদাহরণের জন্য আউটপুটটি এরকম কিছু দেখাচ্ছে:

DISPLAY=:0.0    (gvfs-udisks2-vo)
DISPLAY=:0.0    (zeitgeist-daemo)
DISPLAY=:0.0    (zeitgeist-fts)
DISPLAY=:0.0    (zeitgeist-datah)
DISPLAY=:0.0    (gvfs-mtp-volume)
DISPLAY=:0.0    (gvfs-gphoto2-vo)
DISPLAY=:0.0    (gvfs-afc-volume)
DISPLAY=:0.0    (geyes_applet2)
DISPLAY=:0.0    (indicator-apple)
DISPLAY=:0.0    (cat)
DISPLAY=:0.0    (python)
DISPLAY=:0.0    (gvfsd-trash)
DISPLAY=:0.0    (indicator-keybo)
DISPLAY=:0.0    (gvfsd-burn)
DISPLAY=:0.0    (cat) 
DISPLAY=:0.0    (cat)
DISPLAY=:0.0    (gnome-terminal)
DISPLAY=:0.0    (bash)
DISPLAY=:0.0    (bash)
DISPLAY=:0.0    (sed)

অতিরিক্ত পড়ার জন্য আপনি পিটিএমএক্সের ম্যান পেজগুলি দেখতে পারেন

$ man ptmx

এটি আপনাকে সিউডো-টার্মিনালের মাস্টার-স্লেভ সম্পর্কের জন্য কিছুটা অন্তর্দৃষ্টি দিতে পারে।

আশা করি এটা কাজে লাগবে!

এছাড়াও আপনি কোথায় এই স্ক্রিপ্ট পেয়েছেন?

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