CentOS9 รันสคริปต์ที่ใช้ GUI ด้วย SSH


ตัวอย่างคำสั่ง

[root@localhost ~]# su - mill 
Last login: Thu Aug 14 17:17:25 +07 2025 on pts/0 [mill@localhost ~]$ export DISPLAY=:0 
[mill@localhost ~]$ xhost +SI:localuser:root sudo DISPLAY=:0 /home/mill/restart_webviewer.sh

อธิบายทีละคำสั่ง

su - mill
  • คำสั่ง su = switch user (เปลี่ยนผู้ใช้)
  • เครื่องหมาย - หมายถึงโหลด environment ของ user นั้นเหมือน login ใหม่
  • ตรงนี้คือเปลี่ยนจาก root ไปเป็น user ชื่อ mill
export DISPLAY=:0
  • เป็นการกำหนดค่า environment variable ชื่อ DISPLAY
  • :0 หมายถึง หน้าจอหลัก ของ X server (GUI ของ Linux)
  • ทำให้โปรแกรม GUI ที่เปิดจาก user mill จะถูกส่งไปแสดงบนจอจริง
xhost +SI:localuser:root
  • xhost ใช้ควบคุมสิทธิ์การเข้าถึง X server (GUI)
  • +SI:localuser:root หมายถึงอนุญาตให้ user root สามารถใช้ X server (จอ GUI) ได้
  • ถ้าไม่ทำขั้นตอนนี้ root จะเปิดโปรแกรม GUI ไม่ได้ เพราะ X server จะบล็อก
sudo DISPLAY=:0 /home/mill/restart_webviewer.sh
  • sudo = รันคำสั่งด้วยสิทธิ์ root
  • DISPLAY=:0 กำหนดให้ script ที่รัน สามารถแสดงผลบนหน้าจอ GUI ได้
  • /home/mill/restart_webviewer.sh คือ script ที่ต้องการรัน (เป็น shell script ที่น่าจะ restart โปรแกรม webviewer)

, ,