كيف يمكنني تتبع النوافذ ذات الصلة في X11؟
-
09-06-2019 - |
سؤال
لسوء الحظ، سؤالي ليس بسيطًا مثل تتبع نافذتين تم إنشاؤهما بواسطة نفس العملية.
وهنا ما لدي:
- قام اثنان من المستخدمين، هما Jack وJim، بتسجيل الدخول عن بعد إلى نفس نظام Unix وتشغيل خوادم X
- يقوم جاك بتشغيل تطبيق "AwesomeApp"، الذي يفتح واجهة المستخدم الرسومية في نافذة X
- يقوم جيم بتشغيل مثيل آخر لهذا التطبيق، ويفتح نافذة واجهة المستخدم الرسومية الخاصة به
- الآن، يقوم جاك بتشغيل تطبيق المشرف الذي سيتواصل مع العملية التي تمتلك النافذة الأولى (على سبيل المثال "AwesomeApp") لأنه مثيل HIS لـ "AwesomeApp"
- كيف يمكن لمثيله من المشرف العثور على مثيل نافذة "AwesomeApp" الخاص به؟
آآآه...البحث عنه على أساس كل مستخدم، نعم يمكن أن ينجح ذلك.طالما أخبرت المستخدمين أنه لا يمكنهم تسجيل الدخول بنفس حساب المستخدم من مكانين مختلفين.
المحلول
يمكنك استخدام pgrep للحصول على معرف العملية لمثيل Jack الخاص بـ AwesomeApp:
pgrep -u Jack AwesomeApp
لذا، إذا قمت بتشغيل تطبيق المشرف من برنامج نصي Shell، فيمكنك القيام بشيء مثل ما يلي:
AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`
# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID
وبدلاً من ذلك، إذا كنت لا ترغب في استخدام برامج خارجية مثل pgrep أو ملاحظة, ، يمكنك دائمًا محاولة البحث عن العملية في /proc مباشرة.
لا تنتمي إلى StackOverflow