GNU screen: $term too long – sorry

Kurze Notiz um einen nervigen Bug zu fixen.
Nachdem ich wegen der 256-Farben-Palette von Solarized auf rxvt-unicode-256color umgestiegen bin, lässt sich GNU-Screen plötzlich nicht mehr starten.
Die Fehlermeldung lautet:

$term too long - sorry

Der Bug ist im Debian-Bugtracker mit der Nummer #621804 bekannt. Es gibt scheinbar auch einen Fix sowohl Upstream als auch bei Debian, aber das Ganze scheint noch nicht eingepflegt worden zu sein.
Ich weiß zwar nicht, warum die Char-Variable für den Namen des Terminalemulators nur 20 Byte groß sein darf, aber die Lösung des Problems scheint recht einfach zu sein.
In .Xdefaults muss der Name des Terminals verkürzt werden.
z.B.

urxvt*termName:		rxvt-256color

Damit scheint alles wieder in Ordnung zu sein.

Solarized: dircolors mit 256 Farben für rxvt-unicode

Seit zwei Monaten nutze ich Ethan Schoonovers Farbschema "Solarized" für meinen Terminalemulator rxvt-unicode und meinen bevorzugten Editor Vim. Ich bin seither sehr zufrieden mit dem neuen Aussehen des Terminals. Verzeichnisse und verschiedene Arten von Dateien werden dadurch einfach besser hervorgehoben. Am liebsten wäre mir aber anstatt der 16 ANSI Farben das komplette 256-Farben-Thema gewesen. Obwohl ich damals die richtige TERM-Variable in .Xdefaults gesetzt hatte, passierte leider rein gar nichts.
Doch dann geschah es.
Als ich vor ein paar Tagen aptitude search rxvt ausführte, entdeckte ich plötzlich das Paket rxvt-unicode-256color. Autsch und Sorry. 😳 Irgendwie muss mir entgangen sein, dass es mehrere Rxvt-Unicode-Pakete bei Debian gibt und stillschweigend hatte ich angenommen, dass man den 256-Farben-Modus in der .Xdefaults an- und ausschalten kann.
Hat man rxvt-unicode-256color erst einmal installiert und die Variable

urxvt*termName:        rxvt-unicode-256color

in der .Xdefaults gesetzt, muss man nichts weiter tun als die Datei dircolors.256dark von seebis git Repositorium herunterzuladen und wie im alten Beitrag beschrieben nach ~/.dir_colors kopieren und dann von ~/.profile mit dem eval Befehl aufzurufen. Danach sind dann die Farben der Dateien und Verzeichnisse mit 256 Farben solarisiert.

Auch die Farben in Vim sehen dann gegenüber der alten 16 Farben ANSI Version natürlich verändert aus.

Mir gefällt Solarized als Farbthema weiterhin ausgezeichnet gut und wer nicht so auf dunkle Themen steht, sollte sich auch einmal die helle Version von Solarized anschauen, auf die sich spielend leicht in jedem Editor umstellen lässt.

Sicherer Datentausch: Ein sftp-Server mit chroot

Vor zwei Jahren wollte ich mehrere 100 MB an Fotos mit ein paar Freunden teilen, die sich nach einem gemeinsamen Urlaub angesammelt hatten. Damals waren Dropbox und ähnliche Dienste noch nicht ganz so präsent wie heute. Außerdem war es eine gute Gelegenheit mehr über FTP- und SSH-Server zu lernen und manch bekennenden Windowsnutzer ordentlich zu verwirren: "Ja, du musst ssh benutzen. Es gibt keine andere Möglichkeit um an die Fotos zu gelangen." haha 😈
Zu dieser Zeit sollte es unbedingt ein sftp-Server sein, da ich für viele andere Aufgaben sowieso schon ssh einsetzte. Damit spart man sich das Einrichten eines zusätzlichen ftp-Servers und erhält gleichzeitig noch eine sichere Methode zum Datenaustausch dazu.
Die folgende Anleitung beschreibt die Einrichtung eines ssh-Servers, der für eine Gruppe von Benutzern nur als sftp-Server zugänglich sein soll. Alle User werden dabei in einer chroot-Umgebung eingesperrt und Shell-Zugriff verwehrt um die Sicherheit auf dem Server zu erhöhen. Als Beispiel dient mir der Benutzer mika und die Gruppe freunde. Das HowTo sollte mit jeder auf Debian basierenden Distribution funktionieren und sich mit jeder anderen nachvollziehen lassen.

Installation

aptitude install ssh

Anlegen der für sftp berechtigten Nutzer und der Gruppe freunde

adduser mika
addgroup freunde
adduser mika freunde

Absichern des Chroot Verzeichnisses

chown root.root /home/mika

Mikas Heimverzeichnis sollte im Besitz von root sein, damit er effektiv darin eingesperrt ist und er standardmäßig keine Dateien auf dem Server hochladen kann. Da aber ein Datenaustausch auch manchmal in umgekehrter Richtung sinnvoll sein kann, genügt es, einen Ordner wie upload in diesem Verzeichnis zu erstellen und ihn Mika mit

chown mika.mika /home/mika/upload

zu überantworten.

Konfiguration von /etc/ssh/sshd_config

Notwendige Sicherheitsvorkehrungen

    • Port 42123

Der Standardport für SSH ist 22. Mit dieser Variablen lässt sich der Listen Port z.B. auf 42123 für den Server ändern. Das macht den Server zwar kein bisschen sicherer (security through obscurity), hilft aber unter Umständen die Existenz des ssh-Servers zu verschleiern.

    • PermitRootLogin no

Wenn ein Angreifer root werden möchte, muss er mit dieser Einstellung mindestens noch das Passwort eines weiteren Users auf dem Server kennen.

    • PermitEmptyPasswords no

SSH-Nutzer ohne Passwort sind natürlich ein Unding. Obwohl ich mir gut vorstellen kann, dass man das als eine weitere Möglichkeit zu "Was man mit alten Computern machen kann" hinzufügen könnte. Anstatt selbst zu lernen wie man in den eigenen alten Rechner einbricht, könnte man das doch auch andere tun lassen... 😉

    • Subsystem sftp internal-sftp

Das aktiviert sshds internen sftp-Service. Normalerweise verweist Subsystem sftp auf eine ausführbare Binärdatei wie z.B. /usr/lib/openssh/sftp-server. Diese muss durch den internen Dienst ersetzt werden.
Am Ende der /etc/ssh/sshd_config sollte dann folgender Match-Eintrag hinzugefügt werden.

Match group freunde
      ChrootDirectory /home/%u
      X11Forwarding no
      AllowTcpForwarding no
      ForceCommand internal-sftp

Der Match-Block gilt nur für die Gruppe freunde und jeden Nutzer, der sich darin befindet. Mika kann sich deswegen nur per sftp mit dem Server verbinden und landet danach im festgelegten Chroot-Verzeichnis. Der Shell Zugriff mit ssh wird effektiv unterbunden. Das Chroot muss nicht zwangsläufig mit Mikas Homeverzeichnis übereinstimmen und kann beliebig gewählt werden. Der Parameter %u wird durch den eingeloggten Nutzer ersetzt.

Der erste Test

Jetzt ist es an der Zeit den OpenSSH-Server neuzustarten. Als SFTP-Klienten eignen sich später z.B. das Firefox Addon Fireftp, Filezilla, WinSCP für Windows oder ganz einfach das Kommandozeilenprogramm sftp.

/etc/init.d/ssh restart

Danach sollte der sftp-Zugriff für Mika am Beispielrechner 192.168.0.200 funktionieren.

sftp -P 42123 mika@192.168.0.200

und der ssh-Zugriff verwehrt werden

ssh -p 42123 mika@192.168.0.200

DynDNS.org

Es ist zwar schön, dass der Server nun in unserem internen Netzwerk funktioniert, aber irgendwie müssen die Freunde von außerhalb darauf zugreifen können. Die meisten werden sicherlich eine dynamische IP vom Provider zugewiesen bekommen, weshalb es Sinn macht einen kostenlosen DNS-Dienst wie z.B. dyndns.org zu benutzen, um eine leicht zu merkende URL wie z.B. 4freunde.dyndns.org zu erhalten.
Nachdem man sich bei dyndns.org angemeldet hat, muss man dem Dienst auf irgendeine Art noch mitteilen wie die aktuelle IP-Adresse des Heimservers lautet. Dazu bietet sich z.B. ddclient an. Bei der Installation wird man nach Login und Passwort bei dyndns.org gefragt und kann ansonsten die Standardeinstellungen verwenden.
Sollte man eine Firewall einsetzen oder wie ich einen Router mit eingebauter Firewall haben, dann muss nur noch der SSH-Dienst mit Hilfe von PortForwarding an den Zielserver und Port 42123 weitergeleitet werden. Danach kann sich dann Mika von überall auf der Welt mit

sftp -P 42123 mika@4freunde.dyndns.org

auf dem Heimserver einloggen.

Last but not least - Denyhosts

Wenn man seinen Server eine Weile laufen lässt und spaßeshalber mal die Datei /var/log/auth.log öffnet, fallen einem die regen Zugriffsversuche auf...die allesamt nicht von den Freunden stammen. Willkommen im Internet! John Doh und Nihao versuchen mit Brute-Force-Attacken in den ssh-Server einzubrechen. Eine wirksame Methode das zu unterbinden ist z.B. denyhosts oder noch besser gleich den SSH-Port ändern und auf SSH-Schlüssel umstellen.
Bei Debian konnte ich nach der Installation mit den Voreinstellungen sehr gut leben. Die Datei /etc/denyhosts.conf ist aber hervorragend kommentiert und lässt sich leicht an die eigenen Wünsche anpassen. Das Programm registriert fehlgeschlagene Logins und setzt die IP Adresse des Angreifers nach einer festgelegten Anzahl von Versuchen in die Datei /etc/hosts.deny, womit jeder weitere Loginversuch verwehrt wird. Es gibt noch viele weitere Möglichkeiten einen Mißbrauch zu verhindern. Ich fand damals diesen Heise-Artikel zum Thema sehr lesenswert. Wenn man sehr restriktiv ist und vielleicht sogar die IP-Adresse der Freunde kennt, kann man auch alle Zugriffe mit Hilfe von /etc/hosts.allow und /etc/hosts.deny verbieten und nur ausgewählte IPs erlauben.
SSH ist ein ausgesprochen vielseitiges und nützliches Werkzeug. Als Beweis, dass ich nicht der Einzige bin, der positive Erfahrungen mit ssh gemacht hat, hier mal ein Link zu keros Artikel "sperr mich ein baby".

Meine Quellen

SSH der unverzichtbare Alleskönner

Ich wollte schon länger etwas zu SSH schreiben, denn im Grunde genommen gehört es zu den von mir am meisten benutzten Anwendungen mit Linux. Der OpenSSH- oder Dropbear- Server ist auf jedem meiner Rechner installiert und seit längerer Zeit nutze ich die Secure Shell nicht nur zur Administration des heimischen Rechenzentrums, sondern auch zum Kopieren von Dateien und Mounten entfernter Dateisysteme.
Zu SSH gibt es glücklicherweise schon mehr als genug Informationen im Internet, weswegen ich nicht allzu viel Worte darüber verlieren möchte. Vor einiger Zeit bin ich zufällig schon auf einen Blogeintrag gestoßen, der mir die ganze Arbeit abgenommen hat und den ich wegen seiner übersichtlichen und verständlichen Vorstellung interessanter SSH-Befehle gerne weiterempfehlen möchte.
Der Post heißt "6 nützliche Dinge, die man mit ssh tun kann" und findet sich auf daniel-ritter.de.
Ich denke jeder, der Linux eine längere Zeit benutzt, wird mir zustimmen, dass SSH ein echtes Allroundtalent ist. Insbesondere kann ich mir mit SSH den Overhead eines Samba- oder NFS-Servers sparen. Das scp-Kommando lässt sich genauso wie cp einsetzen um Daten verschlüsselt zwischen zwei Rechnern auszutauschen.
Als Ergänzung eignet sich besonders bei Debian und Ubuntu sshfs , mit dem sich ein entferntes Dateisystem verschlüsselt einhängen lässt. Man sollte nur darauf achten, dass man nach der Installation des Pakets mit dem Benutzer in der Gruppe fuse vertreten ist. Das Einbinden des Dateisystems ist dann genauso einfach wie das Einloggen am SSH-Server.
Zusätzlich hat Daniel noch den SSH-Tunnel und SSH als Socks-Server vorgestellt, mit dem auch in unsicheren Netzen eine sichere Verbindung zu einem Rechner des Vertrauens hergestellt werden kann und mit diesem sich dann z.B. im Internet surfen lässt.
Außerdem gibt es noch die Möglichkeit die Darstellung von X11-Anwendungen auf einem entfernten Rechner an den lokalen Computer weiterzureichen. Hierzu verbindet man sich mit der Option -X mit dem entfernten Rechner und zusätzlich muss X11Forwarding "yes" in /etc/ssh/sshd_config gesetzt sein.
Schließlich existiert sogar noch die Möglichkeit einen sftp-Server als Subsystem von SSH laufen zu lassen, womit man sich auch das Einrichten eines zusätzlichen FTP-Servers sparen kann. Dazu bald mehr.
Wer SSH noch nicht ins Herz geschlossen hat, sollte jetzt damit anfangen. Es lohnt sich. 😉

Transmission: Mein anderer Bittorrent-Favorit

Ich bin Ubuntu dankbar dafür, dass es mich seinerzeit zu Transmission geführt hat. Ich erinnere mich auch nur noch dunkel daran, wie der grafische Client davor hieß, den Ubuntu als Standard auslieferte und die schwergewichtige Anomalie namens Azureus, die noch viel früher meinen Desktop zierte, möchte ich am liebsten vergessen. Seitdem Transmission seinen ersten Auftritt bei Ubuntu hatte, bin ich wunschlos glücklich, wenn es um Bittorrent-Aufgaben geht. Mittlerweile habe ich aber mit Rtorrent eine würdige Alternative für die Konsole gefunden, die effektiv und anspruchslos ihre Dienste verrichtet.
Wenn ich aber gefragt werde, welchen Bittorrent-Client ich empfehlen würde, dann wäre Transmission immer noch erste Wahl. Die Vorteile sind unverkennbar. Auch wenn Rtorrent ein wahres Biest ist, die meisten Leute werden erst einmal die Augen verdrehen, wenn sie eine Ncurses-Konsolenanwendung sehen. Transmission hingegen lässt sich auch für nicht eingefleischte Linuxgeeks schmackhaft machen. Die GUI ist intuitiv und alles funktioniert sofort nach der Installation, ohne dass man sich durch diverse Untermenüs oder Handbuchseiten arbeiten müsste. Zusätzlich ist Transmission für alle bekannten Betriebssysteme verfügbar sei es Linux, Windows, FreeBSD oder MacOS und genau deshalb konnte ich meine Schwester als bekennenden Apple Fan auch von dieser kleinen Anwendung überzeugen. 😉
Transmission kann aber noch mehr. Wer Ubuntu installiert kommt, ohne es vielleicht zu wissen, mit transmission-gtk in Kontakt. Dabei gibt es aber auch eine grafische QT-Oberfläche, ein Webfrontend und, wer hätte es gedacht, auch eine Konsolenvariante. Als Alternative zu Rtorrent bietet sich deshalb z.B. eine Installation von transmission-daemon oder transmission-cli an.
Ersteres lässt sich dann direkt über den Browser ansteuern. Standardmäßig lauscht der Transmission-Daemon auf Port 9091 und mit dem Benutzer und Passwort "transmission" hat man dort direkten Zugriff auf all seine Bittorrent Aufgaben.

Transmission-cli dagegen ist eine reine Konsolenanwendung. Im einfachsten Fall startet man den Download mit transmissioncli meinTorrent.torrent. Natürlich gibt es noch diverse weitere Optionen, die man an den Befehl anhängen kann, womit sich dann unter anderem die Upload- und Downloadrate und Verschlüsselung einstellen lassen.
In vielen Fällen wird die Konsolenanwendung vollkommen ausreichend sein um sich ein Torrent auf den Rechner zu laden. Rtorrent bietet aber mit der ncurses Oberfläche eine flexiblere Möglichkeit um diverse Optionen des Clients auszuführen. Für Transmission-Cli gibt es eine vergleichbare Oberfläche, die in Python programmiert worden ist. Solange Python > 2.6 installiert ist, sollte es mit transmission-remote-cli möglich sein auch ohne Browser direkt auf den transmission-daemon zuzugreifen und alle wichtigen Einstellungen vorzunehmen. Leider funktioniert diese ncurses Oberfläche nicht mit der aktuellen 2.03 Version in Debian Unstable. Sobald 2.30 dort eintrifft liefere ich einen Screenshot und ein paar Sätze dazu nach.
Alles in allem lässt sich Transmission an alle individuellen Bedürfnisse anpassen und sowohl GUI Fans als auch Puristen kommen auf ihre Kosten.

Der Stromeditor sed und ein kleines Skript namens vils

Vor zwei Monaten hatte ich kurz zwei Methoden abseits grafischer Programme vorgestellt, wie man mit Hilfe der Bash und dem Texteditor VIM mehrere Dateien umbenennen kann. Als ich wenige Wochen später mit einem Freund über das gleiche Thema sprach und dabei die eher ungewöhnliche VIM Methode vorstellte, musste ich mir sagen lassen: "Mit einem Texteditor? Das ist ja umständlich. Warum hast du nicht sed benutzt?" 😐 Pah, gibt es denn keine Sonderpunkte mehr für kreative Lösungen. 😉
Mein Ziel mit der Kategorie "Leben auf der Konsole" ist weniger, Abhandlungen über Programmiersprachen und gute Praxistipps für Systemadministratoren zu schreiben. Ich glaube letztere würden sich sowieso langweilen, während andere alle Vorurteile über den typischen Linuxnutzer bestätigt sähen. Ich widme dem Ganzen trotzdem gerne ab und zu meine Aufmerksamkeit, weil sehr viele Probleme sich mit Linux auf unterschiedliche Weise schon von Haus aus lösen lassen. Außerdem habe ich mit der Zeit festgestellt, dass einfache Lösungen, Eleganz und Effektivität sich bei Konsolenanwendungen nicht zwangsläufig ausschließen müssen, eher das Gegenteil ist der Fall.
Bei GNU sed verhält es sich ähnlich. Es gibt schon tonnenweise gute Informationen im Internet. Als Lektüre empfehle ich z.B. sed, awk und reguläre Ausdrücke.
Um das alte Beispiel mit dem Umwandeln von Groß- in Kleinschreibung aufzugreifen, das lässt sich mit sed so lösen:
Als Testlauf

for DATEI in *.jpg ; do NEUEDATEI=`echo $DATEI | sed -e 's/(.*)/L1/'` ; echo "$DATEI wird umbenannt in $NEUEDATEI" ; done

Und so gehts richtig

for DATEI in *.jpg ; do NEUEDATEI=`echo $DATEI | sed -e 's/(.*)/L1/'` ; mv "$DATEI" $NEUEDATEI ; done

Mehr Beispiele gibt es auch hier und hier. Wie der letzte Link zeigt, gibt es tatsächlich mehr als nur eine Möglichkeit Dateinamen von Groß- nach Kleinschreibung oder umgekehrt zu ändern.
Jeder kann nun für sich entscheiden, ob die VIM-Methode oder sed einfacher war. Bei wenigen Dateien verschwende ich auf so etwas sowieso keine Anstrengungen und ändere es schnell per Hand. Wenn aber Tausende von Dateien geändert werden müssen, lohnt sich der Blick auf sed und eine simple Schleifenkonstruktion.
In meinem alten Beitrag hat andre noch auf ein kleines Skript namens vils hingewiesen, welches es auch direkt für Arch Linux in AUR und für FreeBSD oder direkt als Download zu geben scheint. Ruft man vils auf, werden automatisch alle Dateinamen in einem Verzeichnis im Editor der Wahl angezeigt. Dort können sie verändert werden und werden nach dem Abspeichern im Editor exakt so umbenannt. Das Skript nimmt einem also das ls | vim - und das Hinzufügen von Shell Befehlen wie mv innerhalb von vim ab. Leider scheint es nur für die zsh Shell zu funktionieren, ist aber eine praktische Sache, wenn man oft Dateien umändern muss und dafür gerne einen vielseitigen Texteditor wie Vim benutzt.
Fazit: Es gibt wie so oft immer mehr als eine Lösung für das gleiche Problem.

FBI kann auch ohne X X-Files öffnen

Steckst du gerade in der Konsole und möchtest keinen X-Server aufsetzen nur um ein paar Bilder anzuschauen? Vielleicht rettet dann ja fbi, der Framebuffer Imageviewer, den Tag und spart dir eine Menge Zeit. Solange du das Linux Framebuffer Device auf deinem Rechner zum Laufen bekommst, kannst du auch ohne X Bilder und sogar PDF-Dateien auf der Konsole anschauen.
Im heutigen Zeitalter, wo es eine gefühlte Fantastilliarde an Bildbetrachtern gibt, ist das nicht immer sofort als eine weitere Bereicherung wahrzunehmen. ABER..vielleicht hast du einen sehr alten Laptop noch bei dir zu Hause stehen, so etwas wie den Toshiba Satellite 220 CS, und dir fällt rein gar nichts ein, was du damit noch anstellen kannst, dann könnte die Installation von fbi hier unter Umständen aus einer scheinbar nutzlosen Kiste so etwas wie einen elektronischen Fotorahmen machen. Und wenn du sogar noch die alte ISA-Soundkarte in Betrieb nehmen kannst, voilà, ein elektronischer Fotorahmen, der zu den Urlaubsfotos aus der Karibik noch den passenden Reggaesound abspielen kann.
FBI ist schnell erklärt.
Ein Bild anzeigen

fbi mein_bild.jpg

Eine Slideshow mit Endlosschleife im Fotoordner abspielen und nach 15 Sekunden zum nächsten Bild wechseln

fbi * -t 15

Deine Fotosammlung zufällig anschauen, nach 15 Sekunden zum nächsten Bild wechseln und nach dem ersten Durchlauf abbrechen

fbi * -t 15 -u -1


Mit Fbi kannst du auch alle grundlegenden Funktionen eines unter X laufenden Bildprogramms ausführen. Bilder lassen sich um 90 Grad drehen, man kann hinein- und herauszoomen und auch Kommentare zu den Bildern sind darstellbar. Alle gängigen Formate werden unterstützt und falls etwas nicht auf Anhieb funktionieren sollte, hilft die Installation von Imagemagick weiter, womit automatisch die Bilder beim Betrachten in das passende Format konvertiert werden.
Zum Betrachten von PDF-Dateien gibt es das Programm fbgs, was sich im gleichen Paket wie fbi befindet.
Wenn der elektronische Fotorahmen noch nicht die zündende Idee war, lassen sich aber sicher noch ein paar andere Dinge finden, die man mit alten Computern machen kann. 🙂

Rechtschreibprüfung mit aspell

Aspell ist ein Werkzeug, dass ich lange Zeit ignoriert habe, obwohl ich oft mit reinen Textdateien arbeite, denn im Prinzip ist jeder Blogeintrag nichts weiter als eine Ansammlung von Zeichen.
In der Regel schreibe ich alles in einer Textdatei vor. Auch Tags für Listenelemente, Links, Fettgedrucktes, Kursives usw. lassen sich deutlich schneller eintippen, ohne dass ich dafür einen Browser bemühen müsste um das WordPress Backend aufzurufen.
Bei den meisten Einträgen hilft mir dann auch charm zum Bloggen. Im Prinzip brauche ich auch nichts anderes, um einen Post abzuschicken. Lediglich bei Beiträgen mit sehr vielen Links oder Bildern muss ich nacharbeiten.
Mit dem kleinen Pythonprogramm lässt sich auch aspell einbinden und mit der Taste "v" aufrufen, wofür ich bei Debian noch das Paket aspell-de installieren musste. Aspell macht genau das, was man sich von einer Rechtschreibprüfung erwarten kann. Es findet Fehler, kann diese ersetzen oder ignorieren und auch Worte zu seiner Datenbank hinzufügen.
Außerhalb von charm lässt sich mit aspell jede Datei mit dem simplen Kommando

aspell check meine_Textdatei.txt

überprüfen.
In Kombination mit dem Wörterbuch dict lassen sich damit schnell die gröbsten Schnitzer ausbügeln. Aspell ist vielleicht nicht übermäßig bekannt, verrichtet aber zuverlässig seinen Dienst und ist dabei auch noch anspruchslos an die Hardware.

Wer suchet der findet

Irgendwie bin ich froh, dass es mit dem Zeitgeist-Rahmenwerk in Zukunft selbstverständlich werden wird nach Informationen wie "Das Foto, dass ich mir vor zwei Tagen angeschaut habe" suchen zu können. Ich denke das kommt allen zu Gute, die unaufgeräumte Schreibtische und Räume gerne mit dem Spruch "Das Genie beherrscht das Chaos" versuchen zu relativieren. 8)
Auf der anderen Seite, so groß war meine Nachfrage nach Suchprogrammen noch nie. Das Schöne an Linux und insbesondere an Debian ist, es gibt ein klares Schema. Konfigurationsdateien kommen nach /etc, Logdateien sind in /var/log/ und wenn es sonst noch etwas Wichtiges gibt ist es meistens in /usr. Doch die wirklich wichtigen Sachen sind sowieso in /home. Von daher: Wozu die ganze Sucherei?
Wenn ich tatsächlich vergessen habe, wo ich eine Datei abgelegt habe, kommen mir eigentlich immer nur zwei Anwendungen in den Sinn: find und locate.
Praktisch jedes grafische Programm greift auf die beiden zurück. Im Gegensatz zu find benutzt locate eine Datenbank um die Suche auszuführen, was das Ganze erheblich beschleunigt. Bei Debian empfehle ich das entsprechende Paket mlocate. Als root werden die Daten in die Datenbank eingelesen und erneuert, was sich mit dem Befehl

updatedb

einfach erreichen lässt. Als Normalbenutzer genügt danach eine Suche mit

locate "Suchbegriff"

Ungelogen es ist schon Jahre her, dass ich locate benutzt habe. Für die meisten Fälle reicht mir einfach find.
Find besitzt eine Reihe von Optionen. Mit ihnen ist es nicht nur möglich nach Dateinamen, sondern auch nach Groß- und Kleinschreibung, Datum oder Typ der Datei, der Tiefe in einem Verzeichnisbaum oder der Mitgliedschaft in einer Gruppe zu suchen.

find /home/user -name *.ogg | sort > meine_playlist

Das find Kommando lässt sich z.B. durch sort schleusen und alle gefundenen Treffer sortieren und in eine Datei namens meine_playlist schreiben. Danach noch mplayer mit

mplayer -playlist meine_playlist

aufrufen und die gefundenen ogg Dateien lassen sich der Reihe nach mit mplayer anhören.
Viele weitere Beispiele gibt es auch mit man find . Selbst wenn man vergesslich sein sollte, Linux bietet viele Möglichkeiten die Habe wiederzufinden, auch ohne den neusten Hexa-Core-Rechner und problemlos von der Konsole.

Systemmonitore für die Konsole

Ich erinnerte mich gerade wieder an ein Problem, was manchmal auftaucht, wenn man neue Wege in der Desktopgestaltung beschreitet. Die Rede ist von Ubuntu 11.04 und der (vorläufigen) Entscheidung keine Applets mehr in Unity zu verwenden, so wie man das noch aus Gnome-2-Zeiten gewohnt war. Im Mai hatte ich schon ein paar grafische Alternativen vorgestellt. Möglicherweise gibt es nun schon viel mehr Projekte, die sich um das Programmieren neuer Systemmonitore für Unity kümmern.
Doch warum in die Ferne schweifen, wenn es auch schneller geht. Ich habe mir angewöhnt immer ein Terminalfenster offen zu haben, egal mit welchem Linux ich gerade arbeite oder in welcher Desktopumgebung ich mich befinde. Es gibt gerade zur Ermittlung von Systeminformationen viele, sehr viele Konsolenanwendungen, die genau die Übersicht und Information liefern, die man braucht und dabei unbemerkt auch im Hintergrund laufen können, weil sie durch ihren geringen Speicherverbrauch keinen wirklich stören. Deshalb hier in Kürze, ein paar Vorschläge um seinen Wissensdurst überall, auf jedem System stillen zu können. Die Screenshots stammen alle aus Ubuntu 11.04. Ich denke solange es sich um ein auf Debian basierendes System handelt, werden sich die gleichen Programme auch dort finden lassen.

    1. htop. Eine deutliche Verbesserung zum Standardprogramm top. Zeigt alle Prozesse interaktiv an, lässt es zu alles nach Threads zu gruppieren, kann unter anderem nach CPU- oder RAM-Auslastung sortieren und auch amoklaufende Programme mit wenigen Schritten auf der Tastatur beenden. Die Farben von htop lassen sich über verschiedenen Themen anpassen. Mit der kleinen Anwendung lässt sich ebenfalls der NICE-Wert von Programmen spielend leicht ändern. Sollte auf keinem System fehlen.

    1. slurm. Verdient es eigentlich schon nur wegen der Referenz an Futurama installiert zu werden. Slurm ist ein Netzwerkmonitor und stellt IP-Verkehr visuell dar. Auf der rechten Seite finden sich die Angaben für den Upload, links für den Download. Slurm lässt sich als normaler Nutzer ausführen und lauscht mit dem Befehl slurm -i eth0 z.B. auf dem Interface eth0.

    1. iftop. Wie Slurm ein Netzwerkmonitor, aber mit ausführlicheren Informationen. Lässt sich zwar nur als Superuser starten, bietet dafür aber einen besseren Überblick, wohin genau der ganze Traffic fließt.

    1. iotop. Ziemlich nützlich, wenn man wissen möchte, welcher Prozess gerade soviel I/O-Last erzeugt, dass scheinbar das ganze System zum Stillstand kommt. Lässt sich als normaler Nutzer starten und sieht ähnlich wie top aus.

Das sind meine vier Konsolenfavoriten, wenn es um Netzwerk- und Systemmonitore geht. Ich will nicht verschweigen, dass es noch viele, sehr viele mehr gibt. (Ich wiederhole mich. 😉 ) An dieser Stelle lege ich allen Interessierten auch einmal KMandlas Wiki ans Herz. Ja, der gute Mann hat am Anfang des Jahres zusätzlich zu seinem Blog noch ein Wiki aufgesetzt und dort angefangen alle Konsolenanwendungen zu sammeln und zu katalogisieren.
Für die ganz schnelle Information muss es sogar oft nicht mal eine installierte Anwendung sein. Ein Befehl im Terminal reicht oft schon aus.

  1. free. Zeigt den freien und benutzten Speicher an.
  2. lshw. Listet die im Rechner verbaute Hardware auf.
  3. lspci. Zeigt alle PCI Geräte an.
  4. lsusb. Zeigt alle USB Geräte an.
  5. uptime. Wie lange läuft die Kiste schon wieder?
  6. vmstat 1. Visualisierung der I/O Ausgabe ähnlich wie bei iotop.
  7. netstat. Zeigt Netzwerkverbindungen an und teilt mit, mit wem man eigentlich gerade Daten austauscht.

Schließlich bleibt auch noch der direkte Zugriff auf das virtuelle /proc Dateisystem. Z.B.
cat /proc/meminfo
cat /proc/cpuinfo
Je nach dem wie die Frage lautet, beantwortet das eigene Linuxsystem diese offen, problemlos und in Sekundenschnelle. Mit Hilfe von screen lassen sich die ganzen Apps auch wunderbar in den Hintergrund verfrachten, wo sie keinen stören und können mit screen -r wieder hervorgeholt werden, sollte man sie erneut brauchen.
Da ist sie wieder die Wahl der Qual. Gerade bei der Suche nach Systeminformationen bin ich aber mit Konsolenanwendungen vollauf zufrieden.