কোনও মেশিনে সমস্ত উন্মুক্ত প্রদর্শন তালিকাভুক্ত করার জন্য একটি আদেশ আছে কি?


76

যখন এসএসএইচ স্থানীয়ভাবে আমার কম্পিউটারে আসবে (জিজ্ঞাসা করবেন না, এটি একটি কার্যকরী), আমি চালানো ছাড়া গ্রাফিকাল অ্যাপ্লিকেশন শুরু করতে পারি না:

export DISPLAY=:0.0

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

কোনও মেশিনে সমস্ত উপলব্ধ ডিসপ্লে (যেমন: সমস্ত সম্ভাব্য মান) তালিকাভুক্ত করার জন্য কোনও আদেশ রয়েছে?


টার্মিন্যাল থেকে অ্যাপ্লিকেশন আরম্ভ করার জন্য একটি ক্লিনার উপায় ( DISPLAY=:0 yourapp & )
নোবার

3
কমান্ড লাইন স্ক্রিপ্ট থেকে সেই প্রদর্শন নম্বর পেতে, চেষ্টা করুন w। আরও তথ্য: এক্স এক্স নাম বিদ্যমান?
এক্সেল

উত্তর:


80

আপনি যদি এসএসএইচ-এর মাধ্যমে এক্স সংযোগটি ফরোয়ার্ড করতে চান তবে আপনাকে এটি সার্ভার সাইড এবং ক্লায়েন্ট উভয় পক্ষেই সক্ষম করতে হবে। (ডিস্ট্রিবিউশন উপর নির্ভর করে, সক্রিয় হতে পারে অথবা ডিফল্টরূপে নিষ্ক্রিয়।) সার্ভার দিকে, নিশ্চিত করুন যে আপনি উপস্থিত রয়েছে কিনা X11Forwarding yes/etc/sshd_config(অথবা /etc/ssh/sshd_configবা যেখানেই কনফিগারেশন ফাইল)। ক্লায়েন্টের পক্ষ -Xথেকে, sshকমান্ডের বিকল্পটি পাস করুন বা ForwardX11আপনার মধ্যে রাখুন ~/.ssh/config

আপনি যদি চালনা করেন তবে আপনার ssh -X localhostএটি দেখতে পাওয়া উচিত $DISPLAY(সম্ভবত) localhost:10.0। এর সাথে বৈসাদৃশ্য করুন :0.0, যখন আপনি এসএসএইচ এর সাথে সংযুক্ত না হন তখন মান হয়। ( .0অংশটি বাদ দেওয়া যেতে পারে; এটি একটি স্ক্রিন নম্বর, তবে একাধিক স্ক্রিন খুব কমই ব্যবহৃত হয়)) এক্স ডিসপ্লেতে দুটি রূপ রয়েছে যা আপনার মুখোমুখি হওয়ার সম্ভাবনা রয়েছে:

  • স্থানীয় প্রদর্শন, এর আগে কিছুই নেই :
  • টিসিপি প্রদর্শন করে, এর আগে একটি হোস্টনাম সহ :

এর ssh -X localhostসাহায্যে আপনি উভয় ডিসপ্লেতে এক্স সার্ভারটি অ্যাক্সেস করতে পারবেন তবে অ্যাপ্লিকেশনগুলি একটি পৃথক পদ্ধতি ব্যবহার করবে: :NUMBERস্থানীয় সকেট এবং ভাগ করা মেমরির মাধ্যমে সার্ভারটি অ্যাক্সেস করে, যেখানে HOSTNAME:NUMBERটিসিপি-র মাধ্যমে সার্ভারটি অ্যাক্সেস করে, যা কিছু ধীরে ধীরে এক্সটেনশান অক্ষম করে।

নোট করুন যে কোনও এক্স সার্ভার অ্যাক্সেস করার জন্য আপনার একধরণের অনুমোদনের প্রয়োজন, যাকে একটি কুকি বলা হয় এবং সাধারণত ফাইলে পর্দার আড়ালে রাখা হয় ~/.Xauthority। আপনি যদি কোনও আলাদা ব্যবহারকারীর অ্যাকাউন্ট অ্যাক্সেস করতে ssh ব্যবহার করে থাকেন, বা যদি আপনার বিতরণটি কুকিগুলিকে অন্য কোনও ফাইলে রাখে তবে আপনি দেখতে পাবেন যে DISPLAY=:0এটি এসএসএইচ অধিবেশনটির মধ্যে কাজ করে না (তবে ssh -Xএটি যদি সার্ভারে সক্ষম হয় তবে আপনি কখনও পাবেন না) সঙ্গে জগাখিচুড়ি প্রয়োজন XAUTHORITYযখন করছেন ssh -X)। যদি সমস্যা হয় তবে আপনাকে পরিবেশের পরিবর্তনশীল সেটXAUTHORITY করতে হবে বা অন্য ব্যবহারকারীর কুকিগুলি গ্রহণ করতে হবে

আপনার আসল প্রশ্নের উত্তর দিতে:

  • স্থানীয় প্রদর্শনগুলি একটি সকেটের সাথে সামঞ্জস্য করে /tmp/.X11-unix

    (cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done)
    
  • রিমোট ডিসপ্লেগুলি 6000 এর উপরে টিসিপি বন্দরগুলির সাথে সমান; মেশিন এম তে ডিসপ্লে নম্বর এন অ্যাক্সেস করা মেশিন এম তে টিসিপি পোর্ট 6000 + এন সাথে সংযুক্ত করে সম্পন্ন করা হয় মেশিন এম থেকে নিজেই:

    netstat -lnt | awk '
      sub(/.*:/,"",$4) && $4 >= 6000 && $4 < 6100 {
        print ($1 == "tcp6" ? "ip6-localhost:" : "localhost:") ($4 - 6000)
      }'
    

    (এই বুলেট পয়েন্টের বাকি অংশগুলি কেবল একাডেমিক আগ্রহের জন্য))

    অন্য একটি মেশিন থেকে, আপনি nmap -p 6000-6099 host_nameসাধারণ ব্যাপ্তিতে টিসিপি পোর্টগুলি খোলার জন্য তদন্ত করতে ব্যবহার করতে পারেন । বিশেষ করে লুপব্যাক ইন্টারফেসের বাইরে এক্স সার্ভারগুলি টিসিপি সকেটে শুনতে পাওয়া আজকাল বিরল।

    কড়া কথায় বলতে গেলে অন্য অ্যাপ্লিকেশনটি এক্স সার্ভার দ্বারা সাধারণত ব্যবহৃত পরিসরে একটি বন্দর ব্যবহার করতে পারে। কোন প্রোগ্রামে পোর্টটি খোলা আছে তা পরীক্ষা করে কোনও এক্স সার্ভার শুনছে কিনা তা আপনি বলতে পারেন।

    lsof -i -n | awk '$9 ~ /:60[0-9][0-9]$/ {print}'
    

    যদি এটি দ্ব্যর্থক কিছু দেখায় sshd, এটি কোনও এক্স সার্ভার বা কাকতালীয় কিনা তা নিশ্চিত করার কোনও উপায় নেই।


15

প্রদর্শনটি প্রথম যুক্তি Xorgpsতারপরে আপনি গ্রেপ Xorgআউট করতে পারেন ।

[braga@coleman teste_geom]$ ps aux | grep Xorg
root      1584  5.3  1.0 156628 41708 tty1     Rs+  Jul22  22:56 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-a3kSKB/database -nolisten tcp vt1
braga     9110  0.0  0.0 109104   804 pts/1    S+   00:26   0:00 grep --color=auto Xorg

তারপরে আপনি awkযেদিকে যে বিন্যাসটি প্রয়োজন তা এটি করতে পারেন।


10
এটি Xorg ব্যতীত অন্য কোনও সার্ভার দ্বারা নির্মিত প্রদর্শনগুলি সনাক্ত করতে পারে না, যেমন Xvnc
সিজেএম

5
ps aux |grep Xআমার জন্য ভালো কাজ
nobar

6
wলগ-ইন থাকা প্রত্যেককে এবং তাদের প্রদর্শন দেখায়।
প্লেনাস ফ্রাঙ্কলি

2
নোট করুন যে Xorg- এর পক্ষে যুক্তিটি (অন্তত এখন, ২০১ in সালে) alচ্ছিক এবং (কমপক্ষে ফেডোরায়) সাধারণত অনুপস্থিত, সুতরাং এই পদ্ধতিটি আর কার্যকর হয় না।
বিআরপোকক

যদি কোনও কারণে শুধুমাত্র পরিবেশের ভার সেট করা সর্বদা কাজ করে না ... এটি কোনও কমান্ডের কাছে প্রেন্ডিং করার চেষ্টা করুন DISPLAY=:0 netsurf "https://medium.com/"... অথবা export DISPLAY=:0প্রক্রিয়াটির সাথে কেবল ভাগ করে নেওয়ার চেষ্টা করুন
রায় ফস

7
# Show all active login shells, with displays
$ w -oush

trunc-us tty1                      23:02  -bash
trunc-us tty7     :0                4days /sbin/upstart --user
trunc-us pts/4    :0                      w -oush

# Capture the Display part
$ w -oush | grep -Eo ' :[0-9]+'

 :0
 :0

# only unique lines
$ w -oush | grep -Eo ' :[0-9]+' | uniq

 :0

# trim off the leading space
$ w -oush | grep -Eo ' :[0-9]+' | uniq | cut -d \  -f 2

[সম্পাদনা করুন: আমি এটি এক্সনেস্ট দৌড়ে দেখেছি এটি এটি ধরবে কিনা - তা হয় না; এটি কেবল লগইন শেলগুলি ক্যাপচার করে ('ডাব্লু' 'যারা' এর জন্য সংক্ষিপ্ত)। আমার জন্য অঙ্কন বোর্ডে ফিরে যান]] [সম্পাদনা: এটি খুঁজে পেয়েছে:

$ ls /tmp/.X11-unix

X0 X2

$ ls /tmp/.X11-unix | tr 'X' ':'
:0
:2

]


1
এটাই ... অদ্ভুত ... আমি অবাক হলাম এর ব্যাখ্যাটি কী।
ফোর্ডি

(আমার জন্য জিডিএম 1024 ডিসপ্লেতে চলমান সম্পর্কিত) আমি এটি দ্বিতীয়বার প্রতিলিপি করতে পারিনি। সেই সময় আমি এক্সআরডিপি, উইন্ডোড এক্স 11 ফরোয়ার্ডিং এবং কয়েকটি ভিএনসি ক্লায়েন্ট চেষ্টা করছিলাম। দেখে মনে হচ্ছে যে একটি সাধারণ ইনস্টলেশন, আপনি লক স্ক্রিনে "অন্য ব্যবহারকারী হিসাবে লগ ইন করুন" বোতামটি চাপলে GDM X0 ... বা X1 এ চলবে। আপনার দ্বিতীয় পদ্ধতিটি আমার জন্য ফেডোরার 23
রায় ফস

আপনার কমান্ডটি ব্যবহার করে আমি ডিসপ্লে 1024 তে কিছু পেয়েছি, কিন্তু আমি সেখানে কিছুই চলতে দেখছি না ... ps xeww | grep DISPLAY=:1024এখন যা জঘন্য হয়েছে তা ব্যবহার করে । আমি 20 ডিসপ্লেতে ক্রোম-রিমোট-ডেস্কটপ চালাচ্ছি।
রায় ফস 15

wএক্স সার্ভারে কোনও অ্যাপ্লিকেশন চলমান না থাকলে (কোনও উইন্ডো ম্যানেজার এবং ডেস্কটপ সহ) কাজ করে না। কিন্তু ls /tmp/.X11-unixকাজ করে।
12431234123412341234123

3
ps e | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u

সমস্ত বর্তমান ডিসপ্লে তালিকাভুক্ত করে কাজটি করবে। এছাড়াও আপনি এর সাথে নির্দিষ্ট ব্যবহারকারীর জন্য নির্ধারিত প্রদর্শনগুলি (r usr) দেখতে পাবেন:

ps e -u $usr | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u

দ্বিতীয়টি কি বোঝাতে চাইছে ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u?
অ্যালেক্সেক্স রোচে

0

ইন /tmpফোল্ডারের এছাড়াও আছে হতে পারে .X??-lockফাইল ??অধিবেশন সংখ্যার নির্দেশ করে।

আপনি যদি সেশন নম্বরটি পুনরায় ব্যবহার করতে চান তবে এগুলি মুছতে হবে।

আপনি এগুলিকে ls -aসাধারণত কোনও ফাইলগুলি .গোপন করা থেকে শুরু করে ব্যবহার করতে দেখতে পারেন ।


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