Systemeinblicke mit Kommandozeilentools: lscpu und lsusb

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-8undexport 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 --extendedgeneriert 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.