นี่เป็นการระบุ 2 ขั้นตอนของหน้าต่างลึกลับของคุณ
บัตรประจำตัว1ก
คุณสามารถเปิดเทอร์มินัลและใช้งานได้
$xwininfo
ซึ่งจะแจ้งให้คุณเลือกหน้าต่างที่คุณต้องการรับข้อมูล
เมื่อคุณมีรหัสหน้าต่างแล้ว WIN_ID
(ท่ามกลางข้อมูลอื่นๆ) คุณสามารถรับข้อมูลเพิ่มเติมด้วยแฟล็กอื่นๆ หรือด้วย wmctrl
, ดู บัตรประจำตัว1b ด้านล่าง.
โดยเฉพาะอย่างยิ่ง คุณอาจต้องการรับ ID กระบวนการ
ถ้า wmctrl
ไม่ได้ผล คุณสามารถลองรับ PID
จาก WIN_ID
กับ
$ xprop -id <WIN_ID> | grep _NET_WM_PID (หรือเพียงแค่...)
$ xprop -id <WIN_ID> _NET_WM_PID
ถ้าคุณไม่ เกรป
คุณจะได้รับข้อมูลที่น่าสนใจอื่น ๆ
จากประสบการณ์ของฉัน สิ่งนี้ไม่ได้ให้ผลลัพธ์ที่ดีเสมอไป
ดูสิ่งนี้ด้วย บัตรประจำตัว2 ด้านล่าง.
ที่เกี่ยวข้อง:
- https://unix.stackexchange.com/a/84981/137608
- https://stackoverflow.com/questions/1131277/how-to-convert-a-x11-window-id-to-a-process-id
- บอกกระบวนการ PID โดยหน้าต่าง?
- https://ubuntuforums.org/archive/index.php/t-1124561.html
บัตรประจำตัว1b
เป็นอีกทางเลือกหนึ่ง (อาจใช้ง่ายกว่า แต่ในกรณีของคุณดูเหมือนว่าจะไม่ทำงาน)
คุณสามารถเปิดเทอร์มินัลและใช้งานได้
$ wmctrl -l -p -x
เพื่อแสดงหน้าต่างทั้งหมดที่จัดการโดยตัวจัดการหน้าต่างปัจจุบัน
(สามารถตรวจสอบกับ wmctrl - ม
หรือ env | grep -i เดสก์ท็อป
และจะเป็นประโยชน์ถ้าคุณโพสต์ผลลัพธ์นั้นใน OP)
จาก wmctrl -- ช่วยด้วย
:
รูปแบบของรายการหน้าต่าง:
<รหัสหน้าต่าง> <รหัสเดสก์ท็อป> <เครื่องไคลเอนต์> <ชื่อหน้าต่าง>
นี่คือรูปแบบพื้นฐานที่ได้รับจาก -l
. ตัวเลือก -หน้า
และ -x
เพิ่มคอลัมน์พิเศษ
คอลัมน์ 1 (ID หน้าต่างตัวเลข จากตัวเลือกพื้นฐาน -l
), 3 (หมายเลข PID จากตัวเลือก -หน้า
), 4 (WM_CLASS
จากตัวเลือก -x
) และ 5 (ชื่อหน้าต่าง จากตัวเลือกพื้นฐาน -l
) ของเอาต์พุตจะมีประโยชน์มากที่สุด
จากนั้นคุณสามารถใช้
$ wmctrl -a <ชนะ>
กับแต่ละหน้าต่างในรายการ
เป็น "เปิดใช้งานหน้าต่างโดยสลับไปที่เดสก์ท็อปแล้วยกขึ้น" (กาเครื่องหมาย )
ด้วยวิธีนี้ คุณสามารถระบุหน้าต่างลึกลับของคุณได้
ส่วน <WIN>
: "อาร์กิวเมนต์นี้ระบุหน้าต่าง โดยค่าเริ่มต้นจะตีความเป็นสตริง สตริงจะจับคู่กับชื่อหน้าต่างและใช้หน้าต่างแรกที่ตรงกัน การจับคู่ไม่คำนึงถึงขนาดตัวพิมพ์และสตริงอาจปรากฏในตำแหน่งใดก็ได้ของชื่อเรื่อง "
ดังนั้นคุณน่าจะโอเคสำหรับ <WIN>
สตริงย่อยใดๆ ของคอลัมน์ 5 ด้านบน เช่น wmctrl -a 'ไฟร์ฟอกซ์'
.
คุณอาจจำเป็นต้องหลีกสตริงอย่างเหมาะสม
หรือคุณสามารถใช้
$ wmctrl -a <หน้าต่างเลขฐานสิบหก> -i
ด้วยคอลัมน์ 1 ด้านบน (ซึ่งหลีกเลี่ยงความกำกวมที่เป็นไปได้ด้วยการจับคู่สตริงของชื่อหน้าต่าง) หรือ
$ wmctrl -a <WM_CLASS> -x
ด้วยคอลัมน์ 4 ด้านบน
คุณสามารถปรับแต่งตัวเลือกที่ตลกและมีประโยชน์อื่นๆ ได้ เช่น -ร
หรือ -G
.
บัตรประจำตัว2
กับ พิดโน
ของแต่ละหน้าต่างเป้าหมาย คุณสามารถใช้
$ ps -ef | grep <pidno>
$pwdx <pidno>
$pidstat -p <pidno>
$ls /proc/<pidno>
$cat /proc/<pidno>/<file>
เพื่อระบุตัวตนต่อไป
คุณสามารถเห็นกับ ล
เหนือสิ่งที่คุณจะใช้ได้ <file>
, เช่น., สถานะ
หรือ cmdline
.
แหล่งที่มา:
- จะดูข้อมูลโดยละเอียดเกี่ยวกับ PID ที่กำหนดได้อย่างไร
- https://superuser.com/questions/632979/if-i-know-the-pid-number-of-a-process-how-can-i-get-its-name