Mainboard-Informationen unter Linux ermitteln

Manchmal ist es notwendig im Terminal unter Linux einige Informationen über das verbaute Mainboard zu ermitteln. Hierfür dient der Befehl:

dmidecode -t 2

Diese liest die entsprechenden Daten auf dem sysfs und zeigt sie an:

# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.2.1 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
	Manufacturer: ASUSTeK COMPUTER INC.
	Product Name: WS C246 DC
	Version: Rev 1.xx
	Serial Number: 190856070000221
	Asset Tag: Default string
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Default string
	Chassis Handle: 0x0003
	Type: Motherboard
	Contained Object Handles: 0

Terminal-Bibliothek für Java

Für ein kleines Projekt wollte ich eine Visualisierung in der Konsole bzw. im Terminal unter Java realisieren. Das Problem ist das bei der Visualisierung, je nach verwendetem Terminal, bestimmte Operationen nicht verfügbar sind. Dies fängt schon beim Löschen des Bildschirmes an. Je nach Art des Terminals bzw. Betriebssystem kann es hier unterschiedliche Ansätze geben, um dieses Problem zu lösen. Abhilfe bei diesen Problemen schafft die Bibliothek Lanterna.

Lanterna in Aktion

Laterna liefert die Möglichkeit Text-Schnittstellen und GUIs zu bauen, unabhängig vom verwendeten Terminal. Damit ähnelt sie der C-Bibliothek ncurses. Die Bibliothek ist in der Lage festzustellen, auf welcher Art Terminal sie läuft und kann somit die Ausgabe entsprechend anpassen. So werden z.B. Unix-Steuercodes genutzt, wenn das Terminal diese unterstützt. Nach der Einbindung per Maven:

<dependency>
    <groupId>com.googlecode.lanterna</groupId>
    <artifactId>lanterna</artifactId>
    <version>3.0.1</version>
</dependency>

kann die Nutzung der Bibliothek beginnen. Im ersten Schritt sollte eine Instanz der Klasse Terminal angelegt werden:

Terminal terminal = new DefaultTerminalFactory().createTerminal();

Dies übernimmt die DefaultTerminalFactory. Sie sorgt dafür, dass das passende Terminal ausgewählt wird. Nun können Zeichen auf das Terminal geschrieben werden:

terminal.clearScreen();
terminal.putCharacter('a');

Hier wird das Terminal erst bereinigt und anschließend das Zeichen a auf das Terminal geschrieben. Neben der direkten Arbeit mit dem Terminal, liefert Lanterna eine Abstraktionsschicht namens Screen mit, mit welcher das Terminal wie ein pixelbasiertes Gerät angesprochen werden kann. Neben der Ausgabe beherrscht die Bibliothek die Eingabe. Mittels:

KeyStroke keyStroke = terminal.pollInput();

wird die aktuelle gedrückte Taste abgefragt. Diese Methode arbeitet nicht-blockierend. Für den Fall das eine blockierende Methode benötigt wird, eignet sich die Methode:

KeyStroke keyStroke = terminal.readInput();

Damit lassen sich mithilfe der Bibliothek komplexe Anwendungen auf dem Terminal umsetzen. Wenn die Anwendung beendet werden soll, muss das Terminal mittels:

terminal.close();

geschlossen werden. Der Quelltext der Bibliothek ist auf GitHub zu finden. Er ist unter der LGPL lizenziert und damit freie Software.

Doxygen Ausgabe anpassen

Die Ausgabe welche das Dokumentationsframework Doxygen erzeugt sieht leider etwas altgebacken aus. Glücklicherweise kann man das Doxygen-Design relativ einfach anpassen. Vorgefertigte Designs gibt es unter anderem auf GitHub.

Die angepasst Doxygen Ausgabe

Die angepasst Doxygen Ausgabe

Nachdem das Repsitory geklont wurde, müssen die Dateien header.html, footer.html und customdoxygen.css zur Konfigurationsdatei gepackt werden. In der Konfigurationsdatei müssen folgende Parameter angepasst werden:

HTML_HEADER       = header.html 
HTML_FOOTER            = footer.html 
HTML_STYLESHEET        = customdoxygen.css

Nachdem die neue Dokumentation erzeugt wurde, muss die Datei doxy-boot.js in den HTML-Ausgabe-Ordner kopiert werden. Anschließend kann die Dokumentation genutzt werden.

Größere Dateien unter Linux finden

Möchte man unter Linux auf der Konsole nach Dateien suchen welche eine bestimmte Größe überschreiten, so kann man folgende Kommandozeile nutzen:

ls -lahS $(find / -type f -size +20000k)

Damit werden alle Dateien mit einer Größe von mindestens 20 Megabyte angezeigt. Die Ausgabe sieht in etwa so aus:

-rw------- 1 postgrey postgrey  10M Feb  1 18:22 /var/lib/postgrey/log.1000000002
-rw-r--r-- 1 root     root     9,9M Jul 13  2014 /usr/lib/locale/locale-archive