Systemeinblicke mit Kommandozeilentools: lscpu und lsusb

·6 min·Andreas Haerter·

Hinweis: Dieser Artikel erschien vorab in in englischer Sprache im Fedora Magazin.

Fedora (und andere gängige Linux-Distributionen) bieten eine Reihe von Tools zur Verwaltung, Ăśberwachung und zum Verständnis des Systems. Zu diesen Tools gehören eine Reihe von Befehlen, die mit ls (fĂĽr “list”, auflisten) beginnen.

Diese bieten einfache Einblicke in verschiedene Aspekte der Hardware und Ressourcen des Systems. Diese Artikelserie gibt eine kurze EinfĂĽhrung und Ăśbersicht ĂĽber einige dieser Kommandos, beginnend mit den einfacheren Befehlen. Der Beitrag behandelt lscpu und lsusb.

lscpu – CPU-Informationen anzeigen

Der Befehl lscpu sammelt und zeigt Informationen zur CPU-Architektur an. Er wird unter Fedora vom Paket util-linux bereitgestellt. Das Programm sammelt CPU-Informationen aus mehreren Quellen wie /proc/cpuinfo sowie architekturspezifischen Bibliotheken (z. B. librtas auf PowerPC):

$ lscpu

Diese Eingabe gibt Informationen wie die Anzahl der CPUs, Threads pro Kern, Kerne pro Sockel sowie die CPU-Familie und das Modell aus.

Auf Anfrage gibt er detaillierte CPU-Informationen im JSON-Format aus. Dies bietet eine strukturierte Ansicht, die besonders fĂĽr Skripting und Automatisierung nĂĽtzlich ist:

$ lscpu --extended --json

Erweitertes Anwendungsbeispiel

Mit der maschinenlesbaren JSON-Ausgabe können Informationen mit jq extrahieren (ein leistungsstarkes Befehlszeilentool, mit dem JSON-Daten effizient analysiert, gefiltert und bearbeitet werden können und das einen eigenen Artikel wert ist). Beispielsweise extrahiert die folgende Eingabe die aktuelle MHz-Taktung für jede CPU:

export LANG=en_US.UTF-8
export LC_ALL="en_US.UTF-8"
lscpu --json --extended \
  | jq '.cpus[] | {cpu: .cpu, mhz: .mhz}'

Schauen wir uns die einzelnen Teile des Befehls an:

  • export LANG=en_US.UTF-8 und export LC_ALL="en_US.UTF-8" stellen sicher, dass die Ausgabe keine lokalisierten Zahlen verwendet. So kann beispielsweise eine deutsche Spracheinstellung kann zu einer fehlerhaften JSON-Ausgabe fĂĽhren, da Kommas anstelle von Punkten als Trennzeichen fĂĽr Gleitkommazahlen verwendet werden.
  • lscpu --json --extended generiert die detaillierten CPU-Informationen im JSON-Format.
  • jq '.cpus[] | durchläuft jeden Eintrag im CPU-Array. Der Teil {cpu: .cpu, mhz: .mhz} erstellt fĂĽr jeden CPU-Eintrag ein neues JSON-Objekt, das die CPU-Nummer (cpu) und ihre aktuelle Frequenz in MHz (mhz) anzeigt.

Beispielausgabe von einem Laptop, der im Leistungsmodus läuft:

$ lscpu --json --extended \
  | jq '.cpus[] | {cpu: .cpu, mhz: .mhz}'
{
  "cpu": 0,
  "mhz": 3700.0171
}
{
  "cpu": 1,
  "mhz": 3700.2241
}
{
  "cpu": 2,
  "mhz": 3700.1121
}
{
  "cpu": 3,
  "mhz": 3884.2539
}

und später im Energiesparmodus:

$ lscpu --json --extended \
  | jq '.cpus[] | {cpu: .cpu, mhz: .mhz}'
{
  "cpu": 0,
  "mhz": 1200.0580
}
{
  "cpu": 1,
  "mhz": 1200.0070
}
{
  "cpu": 2,
  "mhz": 1200.5450
}
{
  "cpu": 3,
  "mhz": 1200.0010
}

lsusb – Informationen zu USB-Geräten anzeigen

Der Befehl lsusb zeigt detaillierte Informationen zu den USB-Bussen im System und den daran angeschlossenen Geräten an. Er wird unter Fedora vom Paket usbutils bereitgestellt und hilft dabei, die Konfiguration und die an ihre USB-Schnittstellen angeschlossenen Geräte einfach anzuzeigen:

$ lsusb

Diese Eingabe gibt eine Liste aller USB-Busse aus, inklusive der daran angeschlossenen Geräte und kurzer Informationen zu jedem Gerät (beispielsweise ID und Hersteller). Dies ist insbesondere dann nützlich, wenn man schnell überprüfen möchte, welche Geräte am System angeschlossen sind und für eine USB-Geräte-ID für udev-Regeln oder ähnliches erstellt werden sollen.

Anwendungsbeispiel und exemplarische Ausgabe

Für diejenigen, die detailliertere Informationen zu den USB-Geräten benötigen, ermöglicht lsusb die Auflistung detaillierterer Informationen:

$ lsusb | grep Fibocom
Bus 001 Device 013: ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem

$ sudo lsusb -d 2cb7:0210 -v
Bus 001 Device 013: ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x2cb7 Fibocom
  idProduct          0x0210 L830-EB-00 LTE WWAN Modem
  bcdDevice            3.33
  iManufacturer           1 FIBOCOM
  iProduct                2 L830-EB-00
  iSerial                 3 004999010640000
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00a1
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]

Mit den Optionen -v und -t wird lsusb angewiesen, die physische USB-Gerätehierarchie als Baumstruktur inklusive IDs auszugeben. Im Folgenden wird eine detaillierte Baumstruktur aller USB-Geräte mit ihren Typen, Geschwindigkeiten und Geräteklassen angezeigt (hier von einem ThinkPad T480S). Dies ist besonders nützlich für die Behebung von Problemen mit USB-Geräten:

$ lsusb -t -v
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 001: Dev 002, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 046d:c069 Logitech, Inc. M-U0007 [Corded Mouse M500]
    |__ Port 002: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 046a:c098 CHERRY
    |__ Port 002: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 046a:c098 CHERRY
    |__ Port 003: Dev 004, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
        ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
    |__ Port 005: Dev 005, If 0, Class=Video, Driver=uvcvideo, 480M
        ID 5986:2123 Bison Electronics Inc.
    |__ Port 005: Dev 005, If 1, Class=Video, Driver=uvcvideo, 480M
        ID 5986:2123 Bison Electronics Inc.
    |__ Port 006: Dev 013, If 0, Class=Communications, Driver=cdc_mbim, 480M
        ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem
    |__ Port 006: Dev 013, If 1, Class=CDC Data, Driver=cdc_mbim, 480M
        ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem
    |__ Port 006: Dev 013, If 2, Class=Communications, Driver=cdc_acm, 480M
        ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem
    |__ Port 006: Dev 013, If 3, Class=CDC Data, Driver=cdc_acm, 480M
        ID 2cb7:0210 Fibocom L830-EB-00 LTE WWAN Modem
    |__ Port 007: Dev 007, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2b Intel Corp. Bluetooth wireless interface
    |__ Port 007: Dev 007, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2b Intel Corp. Bluetooth wireless interface
    |__ Port 008: Dev 008, If 0, Class=Video, Driver=uvcvideo, 480M
        ID 5986:2115 Bison Electronics Inc.
    |__ Port 008: Dev 008, If 1, Class=Video, Driver=uvcvideo, 480M
        ID 5986:2115 Bison Electronics Inc.
    |__ Port 009: Dev 009, If 0, Class=Vendor Specific Class, Driver=[none], 12M
        ID 06cb:009a Synaptics, Inc. Metallica MIS Touch Fingerprint Reader
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 003: Dev 002, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
        ID 0bda:0316 Realtek Semiconductor Corp. Card Reader
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/5p, 480M
        ID 0451:8442 Texas Instruments, Inc.
        |__ Port 001: Dev 003, If 0, Class=Hub, Driver=hub/7p, 480M
            ID 0424:2137 Microchip Technology, Inc. (formerly SMSC)
        |__ Port 003: Dev 005, If 0, Class=Hub, Driver=hub/3p, 480M
            ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
            |__ Port 001: Dev 006, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
                ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
        |__ Port 004: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 480M
            ID 0451:82ff Texas Instruments, Inc.
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub

Fazit

Beide Befehle bieten trotz ihrer Einfachheit Einblicke in die Konfiguration und den Status des Systems. Egal, ob man Fehler beheben will, etwas optimiert oder einfach nur neugierig ist: die vorgestellten Anwendungen liefern wertvolle Daten, die dabei helfen können, die eigene Linux-Umgebung besser zu verstehen und zu verwalten. Bis zum nächsten Mal, wenn wir uns weitere nützliche Befehlszeilentools mit Auflistung und Informationen und deren Verwendung ansehen.