ฉันไม่สามารถลองได้อย่างสมบูรณ์เนื่องจากเครื่องทั้งหมดของฉันปิดใช้งานรูท
ในการค้นหาผู้ใช้ที่เปิดอยู่คุณสามารถใช้who
คำสั่ง คอลัมน์สุดท้ายของเอาต์พุตมักจะเป็น DISPLAY ที่ผู้ใช้ล็อกอิน บางสิ่งเช่นนี้สามารถใช้เพื่อหยิบหน้าจอขึ้นมา (น่าจะเป็นวิธีที่มีประสิทธิภาพมากกว่าในการทำเช่นนี้คุณสามารถเสนอแก้ไขได้):
who | grep -m1 ^username.*\( | awk '{print $5}' | sed 's/[(|)]//g'
จากนั้นเพื่อเรียกใช้คำสั่งกราฟิก X บนจอแสดงผลนั้น:
DISPLAY=:0 firefox &
โดยที่: 0 จะถูกแทนที่ด้วยสิ่งที่แสดงที่คุณพบในคำสั่งแรกและ firefox จะถูกแทนที่ด้วยคำสั่งอะไรก็ตามที่คุณต้องการเรียกใช้ คุณสามารถใส่มันลงในเชลล์สคริปต์และใช้ตัวแปร
ส่วนต่อไปคือส่วนที่ฉันยังไม่ได้ทดสอบ แต่ฉันไม่เห็นว่าทำไมจึงไม่ควรทำ:
su username -c "DISPLAY=:0 firefox"
เพื่อเรียกใช้คำสั่ง X ในฐานะผู้ใช้นั้น
naga_plugged.pl
สคริปต์เสร็จสิ้น (หรือแยกเป็นแบ็คกราวน์) เนื่องจากudev
จะรอให้สคริปต์ออก