ฉันมีแล็ปท็อปเครื่องเก่าและติดตั้ง Ubuntu รุ่น 20.04 LTS Server (ไม่มี GUI แค่ CLI) มันจัดการผ่าน SSH ดังนั้นการแสดงผลจึงไม่จำเป็น ฉันต้องการปิดจอแสดงผลเมื่อปิดฝา และเปิดใหม่อีกครั้งหากเปิด
ฉันกำหนดค่า acpid เพื่อจัดการการแสดงผลสำเร็จแล้ว
ใน /etc/acpi/เหตุการณ์ ฉันสร้างไฟล์:
เหตุการณ์=ปุ่ม/ฝาปิด*
action=/etc/acpi/lid.sh
สคริปต์:
#!/bin/sh
grep -q ปิด /proc/acpi/button/lid/LID/state
ถ้า [ $? = 0 ]
แล้ว
#ปิดกิจกรรม
setterm -- แรงว่าง
อื่น
#เปิดดำเนินการ
setterm -- สะกิดว่าง
ไฟ
ถ้าฉันเรียกใช้สคริปต์นี้ด้วยตนเอง มันทำงานได้อย่างสมบูรณ์ แต่ดูเหมือนว่า acpi ไม่สามารถเรียกใช้สคริปต์ได้:
$ sudo journalctl -u acpid -f
...
04 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1179]: ได้รับเหตุการณ์เลเยอร์อินพุต "ปิดปุ่ม / ฝา LID"
4 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1179]: กฎจาก /etc/acpi/events/lid ตรงกัน
04 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1353]: กำลังดำเนินการ "/etc/acpi/lid.sh"
04 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1179]: การดำเนินการออกด้วยสถานะ 1
04 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1179]: 1 กฎทั้งหมดตรงกัน
04 ก.ค. 20:03:01 เซิร์ฟเวอร์ acpid[1179]: เหตุการณ์เลเยอร์อินพุตเสร็จสมบูรณ์ "ปุ่ม/ฝาปิด LID ปิด"
...
ข้อผิดพลาด: การดำเนินการออกโดยมีสถานะ 1 (ไม่ใช่ 0)
ถ้าฉันรู้ถูกต้อง รหัสทางออก 1 เป็นปัญหาการอนุญาต (ไม่อนุญาตให้ดำเนินการ) ฉันไม่รู้ว่าทำไมถึง "ไม่อนุญาต" เพราะฉันไม่จำเป็นต้องใช้ ซูโด
เพื่อเรียกใช้สคริปต์นี้