ปิดมอนิเตอร์โดยใช้บรรทัดคำสั่ง


59

ฉันกำลังใช้งานเซิร์ฟเวอร์ Ubuntu บนแล็ปท็อปของฉัน ไม่มีเหตุผลที่หน้าจอจะเปิดจริงๆ ฉันพยายามใช้คำสั่งนี้เพื่อปิดหน้าจอ:

sleep 1 && xset dpms force off

ปัญหาคือฉันได้รับข้อผิดพลาดดังต่อไปนี้

unable to open display "".

ความคิดใด ๆ ที่เกิดขึ้น / เกิดอะไรขึ้น? คำแนะนำอื่น ๆ เกี่ยวกับวิธีการทำเช่นนี้?


คุณมี X server ติดตั้งอยู่หรือไม่ และมันกำลังทำงานอยู่?
enzotib

@enzotib ฉันเชื่อว่าติดตั้งแล้ว สำหรับมันใช้งานได้ฉันไม่แน่ใจ ฉันจะตรวจสอบได้อย่างไร
AngryBird

1
ลองใช้โปรแกรมนี้ก่อน:export DISPLAY=:0.0
RobinJ

ไม่ใช่เอาต์พุต null ที่dpkg -l | grep xserver-xorgจะถูกติดตั้ง เอาต์พุตที่ไม่ใช่ null pgrep -fl Xจะทำงาน โดยวิธีการถ้าทำงานคุณควรอยู่ในเซสชั่นกราฟิก
enzotib

1
@ WarriorIng64: มันเป็นแล็ปท็อป
enzotib

คำตอบ:


59

ในการปิดมอนิเตอร์ในคอนโซลคำสั่งมีดังต่อไปนี้:

sudo vbetool dpms off

เพื่อให้สามารถควบคุมคอนโซลได้โดยกดปุ่มEnterฉันแนะนำ

sudo sh -c 'vbetool dpms off; read ans; vbetool dpms on'

2
คุณอาจต้องการตั้งชื่อแทนสิ่งนี้ให้เป็นประโยชน์
Danny Staple

1
vbetool มีให้บริการทางsudo apt-get install vbetool
David Clarke

1
ในกรณีของฉันคำสั่งนี้ปิดจอแสดงผลจริงๆและไม่ใช่xsetหนึ่ง
golimar

พอคำสั่งปิดจอแสดงผล 2 จาก 3 ปรากฏเป็นสีขาวที่เหลือสักครู่หนึ่งก่อนที่จะรีบูตเครื่องด้วยตนเองหากคำสั่งถูกเรียกใช้งานผ่าน ssh
Danba

@enzotib ฉันคลิกโดยไม่ตั้งใจเพื่อลงคะแนนขอโทษ โปรดแก้ไขคำตอบเล็กน้อยเพื่อลบ downvote
andras.tim

32

ลองใช้คำสั่งเหล่านี้ ...

วิธีปิด

xset -display :0.0 dpms force off 

เปิด:

xset -display :0.0 dpms force on 

หากจอแสดงผลของคุณปิดและเปิดขึ้นมาใหม่ทันทีจากนั้นลองทำสิ่งต่อไปนี้ซึ่งเพิ่มความล่าช้า 1 วินาทีก่อนที่จะปิดหน้าจอ สิ่งนี้ให้โอกาสสำหรับเหตุการณ์ทั้งหมดที่ประมวลผลโดย X server ก่อนที่จะปิดการแสดงผล

sleep 1 && xset -display :0.0 dpms force off 

ฉันจะรู้ได้อย่างไรว่าหน้าจอใดเป็นแบบไหน
Karl Morrison

1
ต่อไปนี้ใช้งานได้สำหรับฉัน (ได้รับแรงบันดาลใจบางส่วนจากคำตอบของ @ enzotib ):xset -display $DISPLAY dpms force off; read temp; xset -display $DISPLAY dpms force on
stiemannkj1

ระวังด้วยนะ ฉันไม่สามารถเปิดจอภาพของฉันอีกครั้งด้วยเครื่องทดสอบหลังจากออกforce off
Zmart

2
อัปเดต: การดึงและถอดสายเคเบิลทั้งหมด (รวมถึงพลังงาน) บนจอภาพได้ช่วยแก้ไขสถานการณ์แล้ว
Zmart

27

xsetคำสั่งที่ระบุไว้ในคำตอบอื่น ๆ จะปิดจอภาพทั้งหมดถ้าคุณมีการติดตั้งจอภาพหลาย xrandrแต่ถ้าคุณต้องการปิดเพียงหนึ่งหรือบางส่วนของจอภาพที่คุณควรใช้

xrandr -qคำสั่งเรียกใช้ครั้งแรกซึ่งจะแสดงรายการจอภาพทั้งหมดและการตั้งค่าการแสดงผลปัจจุบัน ในตอนเริ่มต้นของรายละเอียดจอภาพแต่ละครั้งคุณจะพบชื่อจอภาพที่กำหนดโดยระบบ คุณต้องติดตามสิ่งนั้น

ฉันมีสองจอภาพ (หนึ่งเชื่อมต่อกับพอร์ต DVI และอื่น ๆ กับพอร์ต VGA) และเมื่อฉันเรียกใช้คำสั่งที่ฉันเห็นนี้:

Screen 0: minimum 320 x 200, current 1360 x 768, maximum 2726 x 2726
DFP1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
   1360x768       59.7*+
   ... (more details are shown here, but I have hidden it)

CRT1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 410mm x 230mm
   1360x768       59.8*+   60.0  
   ... (more details are shown here, but I have hidden it)

ในการส่งออกนี้ตรวจสอบพอร์ต DVI เชื่อมต่อถูกระบุว่าเป็นDFP1หนึ่งและอื่น ๆ CRT1เช่น ดังนั้นหากฉันต้องการปิดจอภาพที่สอง (เช่น, CRT1) ฉันได้รันคำสั่งนี้:

xrandr --output CRT1 --off

หากคุณต้องการเปิดจอภาพนั้นอีกครั้งคุณต้องเรียกใช้คำสั่งนี้:

xrandr --output CRT1 --auto

ฉันมี 3 จอภาพ 1 VGA, 1 DVI และ 1 HDMI เมื่อฉันวิ่ง: xrandr - เอาท์พุท VGA1 - อัตโนมัติก็เปิด VGA แต่มันโคลนจอมอนิเตอร์ DVI
ThiagoPonte

อืมแปลกมาก ลอง - บนแทนที่จะเป็น
อัตโนมัติ

@ HarshithJ.V นี่เป็นคำตอบที่ดี! จะดีกว่าxsetเพราะ xset เปิดถ้าคุณเพียงกดทัชแพด ฯลฯ Btw หวังว่าคุณจะจำฉันได้จาก บริษัท ก่อนหน้านี้ของคุณ :-)
Nishant

@Nishant ขอบคุณสำหรับคำชม แปลกฉันจำคุณไม่ได้ โปรด ping ฉันในโซเชียลมีเดียอื่น ๆ เพราะเราไม่สามารถแชทกับกฎได้
Harshith JV

หากคุณมีข้อผิดพลาด crtc ให้พิมพ์ "chvt 7" ก่อนคำสั่ง xrandr เพื่อให้อ่าน "chvt 7 && xrandr -d: 0 - เอาต์พุต eDP1 --auto"
haytham-med haytham

11

ฉันเพิ่งติดตั้ง Ubuntu Server 18.04.1 (ไม่มี GUI, X หรือกราฟิกใด ๆ ) และหลังจากหักหลังเมื่อคืนที่พยายามปิดหน้าจอในที่สุดฉันก็พบคำสั่งเวทย์:

setterm --blank 1

หลังจากดำเนินการคำสั่งหน้าจอจะปิดโดยอัตโนมัติทุกนาที (ถ้าไม่มีการใช้งาน)


และยิ่งไปกว่านั้นถ้าคุณต้องการให้คำสั่งถูกเรียกใช้โดยอัตโนมัติตอนบูตคุณสามารถเพิ่มคำสั่งนั้นลงในcommandline GRUBเพื่อให้เราต้องแก้ไขไฟล์ถัดไป:

sudo nano /etc/default/grub

เมื่อเพิ่มconsoleblank=60ไปGRUB_CMDLINE_DEFAULTแล้วควรมีลักษณะเช่นนี้:

GRUB_CMDLINE_LINUX_DEFAULT="quiet consoleblank=60"

จากนั้นปิดไฟล์และบันทึกหลังจากนั้นเพียงเรียกใช้sudo update-grubและvoilaทุกครั้งที่คุณบู๊ตหน้าจอจะปิดโดยอัตโนมัติทุก ๆ 60 วินาที (ถ้าไม่มีการใช้งาน)

และวิธีนี้ (การเพิ่มคอนโซลว่างไปยัง GRUB) ทำงานได้แม้จากรีโมตเทอร์มินัล (ssh)

สนุก! (อีกครั้ง)


1
การใช้คำสั่งข้างต้นฉันได้รับ: "setterm: terminal xterm-256color ไม่รองรับ --blank" มีอะไรผิดปกติ?
zx485

1
คุณพยายามจากเซสชันระยะไกลหรือไม่?
Boy Graffity

@ zx485 ตรวจสอบคำตอบที่ปรับปรุงแล้วตอนนี้คุณสามารถทำให้หน้าจอปิดจากเซสชันระยะไกล ฉันแน่ใจว่านี่จะแก้ปัญหาของคุณได้
Boy Graffity

6

หากคุณมีจอภาพหลายจอให้ใช้สิ่งนี้:

การปิดจอภาพที่สองของคุณ:
(สมมติว่า CRT-0 เป็นจอภาพซ้ายของคุณและ CRT-1 เป็นจอภาพขวาของคุณ)
xrandr --output CRT-1 --off
การเปิดจอภาพที่สองของคุณ:
xrandr --output CRT-1 --right-of CRT-0 --auto
วิธีที่ xrandr รู้ว่าจะไม่ทำสำเนาหน้าจอแรก


ฉันกำลังทดสอบสิ่งนี้การปิดหน้าจอด้วยวิธีนี้มากกว่าการปิดใช้งานเช่นหน้าจอยังคงเปิดอยู่ มันไม่ได้ใช้ --off'd หน้าจอไม่สามารถหันกลับมากับปุ่มเปิดปิดหน้าจอ (เพราะมันยังคงอยู่บน / ไม่เคยปิด) นอกจากนี้มันยังยุ่งกับการตั้งค่าการแสดงเดสก์ทอปของฉัน หากสิ่งนี้ถูกทำเพื่อปิดการแสดงทั้งสองฉันไม่แน่ใจว่ามันจะง่ายต่อการเปิดโดยไม่ต้องเข้าสู่ระบบ TTY และล้างไฟล์จอภาพ.xmlไม่ว่าจะอยู่ที่ไหน ยิ่งคุณรู้จัก
ThorSummoner

0

ฉันมีปัญหาเดียวกัน สิ่งที่ฉันค้นพบคือบนแล็ปท็อปของฉัน (acer aspire เก่า) ปุ่ม screentoggle เริ่มต้นรองรับ นี่อาจเป็นอะไรfn+F6ก็ได้

วิธีนี้อาจไม่ได้ผลในวันนี้ ฉันหวังว่ามันจะช่วยให้ทุกคนที่พบปัญหานี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.