GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux Monitornamen abrufen

Getestet auf Ubuntu 16.04, 18.04. (Ich weiß, es ist zu spät für eine Antwort, aber diese Lösung ist heute relevant)

$ sudo apt-get install -y hwinfo
...
$ hwinfo --monitor --short
monitor:
                   SONY TV
                   AUO LCD Monitor

Ich habe zwei Monitore angeschlossen. Eines mit dem Laptop und das andere ist ein externes Display. Sobald der externe Monitor ein- oder ausgesteckt wird, spiegelt dieser Befehl die Änderung wider. Sie müssen ständig abfragen. --short entfernen Option liefert detailliertere Informationen.

Sie können den Status mit dem folgenden Hintergrundjob abfragen:

$ while true;
>  do
>   hwinfo --monitor --short;
>   sleep 2;
>  done >> monitor.log &

Die while true Schleife läuft unendlich oft. Die sleep 2 pausiert jede Iteration der Schleife für 2 Sekunden. Und die Ausgabe von hwinfo --monitor --short wird an monitor.log angehängt . Diese Protokolldatei kann Ihnen den Aktivitätsverlauf von Monitor-Plug-Ins und -Plug-Outs liefern.

FYI:Ich verwende ein Python-Hintergrundskript (Daemon) mit dem obigen Befehl (und anderen ähnlichen), um festzustellen, ob jemand einige HW-Plug-Ins und Plug-Outs mit den Systemen im Computerlabor macht. Wenn dies der Fall ist, erhalte ich entsprechende Benachrichtigungen, dass jemand einen Monitor, eine Maus oder eine Tastatur in nahezu Echtzeit ein-/ausgesteckt hat!

Weitere Informationen zu hwinfo Befehl ist hier. Seine Manpage ist auch eine gute Quelle.


sudo get-edid hat bei mir nicht funktioniert. (EDIT:funktioniert jetzt auf einem anderen Computer, Lubuntu 14.10; ich würde BIOS-Unterschiede dafür verantwortlich machen, aber das ist eine zufällige Vermutung ...)

Jedenfalls unter X, xrandr --verbose druckt den EDID-Block. Hier ist eine schnelle und schmutzige Methode, um es zu extrahieren und an parse-edid weiterzugeben :

#!/bin/bash
xrandr --verbose | perl -ne '
if ((/EDID(_DATA)?:/.../:/) && !/:/) {
  s/^\s+//;
  chomp;
  $hex .= $_;
} elsif ($hex) {
  # Use "|strings" if you dont have read-edid package installed 
  # and just want to see (or grep) the human-readable parts.
  open FH, "|parse-edid"; 
  print FH pack("H*", $hex); 
  $hex = "";
}'

Inspiriert von Benis Antwort werden die EDID-Daten mit xrandr gelesen und extrahieren Sie die Monitornamen gemäß der EDID-Spezifikation, ohne dass externe Tools wie parse-edid erforderlich sind :

#!/bin/bash
while read -r output hex conn; do
    [[ -z "$conn" ]] && conn=${output%%-*}
    echo "# $output $conn   $(xxd -r -p <<< "$hex")"
done < <(xrandr --prop | awk '
    !/^[ \t]/ {
        if (output && hex) print output, hex, conn
        output=$1
        hex=""
    }
    /ConnectorType:/ {conn=$2}
    /[:.]/ && h {
        sub(/.*000000fc00/, "", hex)
        hex = substr(hex, 0, 26) "0a"
        sub(/0a.*/, "", hex)
        h=0
    }
    h {sub(/[ \t]+/, ""); hex = hex $0}
    /EDID.*:/ {h=1}
    END {if (output && hex) print output, hex, conn}
    ' | sort
)

Verwendet awk um genau nur den Monitornamen zu extrahieren , und kein zusätzlicher Müll von der EDID, daher "magische Zahlen" wie 000000fc00 , 26 und 0a . Verwendet schließlich xxd um von Hex in ASCII umzuwandeln, wobei ein Monitorname pro Zeile ausgegeben wird.

Basierend auf dieser Lösung habe ich ein praktisches Skript zum Umschalten von Monitoren erstellt, das auch zum einfachen Auflisten von Monitorinformationen verwendet werden kann:

$ monitor-switch --list
Connected monitors:
# DFP5  HDMI    HT-R391
# DFP7  DVI-I   DELL U2412M

$ monitor-switch --list
Connected monitors:
# DisplayPort-1 DisplayPort DELL U2412M
# DisplayPort-3 DisplayPort DELL U2415
# HDMI-A-2      HDMI        LG TV

Linux
  1. Überwachen Sie Ihr Linux-System in Ihrem Terminal mit procps-ng

  2. So überwachen Sie die Benutzeraktivität unter Linux

  3. Verwenden Sie sar, um Ressourcen in Linux zu überwachen

  4. Ändern Sie den Standardmonitor der Linux-Konsole

  5. Linux:Routing basierend auf Domänennamen

So überwachen Sie die Betriebszeit von Linux-Systemen mit Uptimed

So überwachen Sie schnell mehrere Hosts unter Linux

Htop – Ein interaktiver Linux-Systemmonitor/Prozessbetrachter

So überwachen Sie eine Linux-Maschine über Nagios

Überwachen Sie die Linux-Aufgabe mit SysMonTask

10 Beispiele für Linux ss-Befehle zur Überwachung von Netzwerkverbindungen