모니터가 연결되어 있는지 루트 테스트할 수 있나요?

모니터가 연결되어 있는지 루트 테스트할 수 있나요?

노트북 덮개를 닫을 때 /etc/acpiscreen()을 끄는 스크립트를 사용하고 있습니다. xset dpms force off이제 외부 모니터를 연결할 때 다르게 동작하도록(밝기를 0으로 설정) 원합니다. 연결되는지 테스트할 수 있다는 것을 알고 있지만 xrandr스크립트는 루트에 의해 실행되고 xrandr은 특정 X 세션에 의존합니다. X 세션에 관계없이 모니터가 연결되어 있는지 루트 테스트할 수 있는 방법이 있습니까? 저는 아치 리눅스를 사용하고 있습니다.

답변1

방법 #1 - edid 디코딩

이를 사용하여 edid-decode어떤 모니터가 연결되어 있는지 확인할 수 있습니다. 이것은 내 Ubuntu 16.04 시스템에서 가져온 것이지만 Fedora 28 및 CentOS 7.x에서도 작동합니다.

노트:이 특정 시스템에는 두 개의 비디오 포트가 있는데 저는 VGA 포트를 사용했습니다.

이 모니터가 연결되어 있습니다:

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0

VGA 모니터를 분리하면 이런 일이 발생합니다.

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: @@@ Model 0 Serial Number 0
Manufacturer: @@@ Model 0 Serial Number 0

여기에 다시 삽입됩니다.

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0

방법 #2 - 고양이 sysfs

어떤 디스플레이 포트가 있는지 자세히 살펴보면 /sys여기에 나열됩니다 /sys/class/drm.

$ ls /sys/class/drm
card0  card0-DP-1  card0-HDMI-A-1  controlD64  renderD128  version

모니터의 디스플레이 포트는 card0-DP-1(VGA)와 card0-HDMI-A-1(HDMI)입니다. 각 디렉토리를 살펴보면 이라는 파일이 있는데, 이 파일을 status이용하면 cat해당 포트의 상태와 모니터의 연결 여부를 알 수 있습니다.

위와 동일한 테스트에 다음을 삽입합니다.

$ cat /sys/class/drm/card0-DP-1/status
connected

플러그를 뽑으세요:

$ cat /sys/class/drm/card0-DP-1/status
disconnected

인용하다

관련 정보