Krunner ist für mich als KDE-Plasma-Nutzer einer der effektivsten Helfer für einen guten Arbeitsfluss. Es handelt sich um eine kleine Kommandozeile, die vor vielen Jahren einmal als Programmstarter gestartet war und mittlerweile zu einem Multitalent geworden ist.
Einen Tastendruck entfernt
Um die kleine Eingabezeile zu öffnen genügt ein ALT-F2 oder bequemer ALT-Leertaste. Daraufhin öffnet sich das kleine Fenster am oberen Bildschirmrand und wartet auf Eingaben. In den Einstellungen, die über das Symbol links der Eingabezeile geöffnet wird, lässt sich KRunner auch mittig auf dem Bildschirm öffnen. Neben einigen Einstellungen zum Verlauf, den sich KRunner je nach Setting merkt oder auch nicht, besteht der Hauptteil der Einstellungen, die als KCM-Modul in den Systemeinstellungen geöffnet werden, aus über 30 zur Auswahl stehenden Modulen, die definieren, was KRunner kann.
Manche davon können konfiguriert werden, die meisten aber nicht. Im Wiki von KDE werden viele der Module mit Beispielen beschrieben, aber die Liste ist nicht vollständig. Zudem gibt es weitere Runner im KDE-Store und auf GitHub. Um das Universum von KRunner zu ergründen bedarf es somit einiger Recherche, was sich aber lohnt. Ich nutze KRunner schon ewig und entdecke ab und an zufällig Runner, die ich noch nicht kannte.
Konvertieren
Die von mir am häufigsten genutzten Runner neben dem Starten von Programmen sind vermutlich der Umrechner für Währungen, Maße und Einheiten. Den aktuellen Stand des US-Dollar in anderem Währungen erhalte ich mit der Eingabe von1 $ in den Währungen Euro, britisches Pfund, Yen und kanadischer Dollar. Wie heiß mein Backofen in Celsius bei einem amerikanischen Rezept sein muss, verrät mir die Eingabe von 450 f.
Der Browserverlauf wird erst mit Plasma 5.21 angezeigt
Viele Fundstellen
Die relevanten Fundstellen sind meist am Kopf der Ausgabe, manchmal muss man auch ein wenig nach unten. Aber KRunner kann noch viel mehr. Es findet und öffnet Tabs im Browser, durchsucht Google, Wikipedia, die Debian Paketsuche, den Urban Dictionary und führt Shell-Befehle aus. Die Eingabe von ggm: berlin lissabon öffnet Google Maps mit der Streckenbeschreibung.
In Dolphin können mit recentlyused die zuletzt bearbeiteten Dateien aufgelistet werden und vieles mehr. Mit Plasma 5.21 ist ein Modul hinzugekommen, das den Browserverlauf nach besuchten Webseiten durchforstet. Dazu müssen das Paket und die Browsererweiterung Plasma Integration installiert sein. Demnächst erscheint in der Zeitschrift LinuxUser ein Artikel von mir. der sich Krunner intensiver widmet. Ich bin mir aber sicher, nach Jahren immer noch nicht alle Einsatzmöglichkeiten von KRunner zu kennen. Wer nutzt denn von euch noch KRunner und wofür?
Im Nachfolgenden geht es um das Finetuning des Linux Dateisystems. Genauer gesagt: Um die Überwachung von Veränderungen im Dateisystem.
Reichlich Überwachung
Viele Programme unter Linux sind darauf angewiesen Dateien und Ordner ständig auf Änderungen zu überwachen. Z.B. überwacht ein KDE-Desktop-System dessen Konfigurationsdateien auf Veränderungen, falls dort manuelle Eingriffe stattfinden sollten. Auch ein Musikplayer kann – insofern gewünscht und aktiviert – die Musiksammlung ständig auf Veränderungen überwachen. Diverse Suchfunktionen im System (z.B. Baloo) bedienen sich ebenfalls der kontinuierlichen Überwachung von Dateiänderungen. So, wie viele andere Programme auch, die auf einem Linux-System im Hintergrund ihren Dienst verrichten.
Inotify
Für diese Überwachungsfunktion muss nicht jedes Programm eine eigene Routine mitbringen, da haben die Linux-Kernelprogrammierer vorgesorgt und eine Funktion im Kernel implementiert, die sich systemweit von allen Programmen nutzen lässt: Die Inotify-Funktion (aus “I-Node” und “notify”).
Die Anzahl der gleichzeitig zu überwachenden Objekte im Dateisystem ist über einen Kernelparameter festgelegt. Und dieser vorgegebene Wert erweist sich leider auf manchen Systemen als zu klein und beschränkt einige Programme in deren Funktionalität. Standardmäßig ist dieser Wert über folgende Pseudodatei abrufbar:
/proc/sys/fs/inotify/max_user_watches
Mit folgendem Befehl lässt sich der eingestellte Wert auf der Kommandozeile abrufen:
cat /proc/sys/fs/inotify/max_user_watches
Auf meinem System (Manjaro Linux) war der voreingestellte Wert 16384 – anscheinend viel zu niedrig. Und wie groß sollte der Wert sein? Das hängt davon ab.
Watch limit erreicht
Ein Beispiel: Ich wurde darauf aufmerksam, dass auf meinem System etwas nicht stimmt, als ich feststellte, dass ich über die Dateisuche keine neueren Dateien mehr fand. Normalerweise verwende ich das im KDE-Desktopsystem integrierte Baloo zur Dateiindizierung und zur Suche. Eine Abfrage des Status der Dateiindizierung mit dem Befehl balooctl status ergab auf der Kommandozeile folgende Werte:
Die Baloo-Dateiindizierung läuft nicht
Gesamtzahl der indizierten Dateien: 323.533
Dateien, die noch indiziert werden: 2
Dateien, deren Indizierung fehlgeschlagen ist: 100
Der aktuelle Index hat eine Größe von 2,80 GiB
Als ich dann versuchte die Dateiindizierung auf der Kommandozeile manuell zu starten (balooctl enable), bekam ich folgende Fehlermeldung um die Ohren gehauen:
KDE Baloo File Indexer has reached the inotify folder watch limit. File changes will be ignored
Einstellung in sysctl
Aha! Der Dateiindizierung genügte der voreingestellte Wert der max. zu überwachenden Filesystem-Objekte nicht und hat deswegen den Dienst eingestellt. Es galt also den Wert zu erhöhen. Die Erhöhung der max. Anzahl zu überwachenden Objekte im Dateisystem kann auf der Kommandozeile über einen Befehl erfolgen:
sudo sysctl -w fs.inotify.max_user_watches=524288
Bei diesem Beispiel hätten wir den Wert auf ca. eine halbe Million zu überwachender Dateien festgelegt. Hier kann auch ein höherer Wert gewählt werden. Aber eine halbe Million Dateien als Obergrenze haben sich als ein praktikabler Wert für den alltäglichen Gebrauch bewährt.
Für die Ewigkeit
Doch Vorsicht: Mit diesem Befehl haben wir die Konfiguration nur temporär geändert. Nach Abmeldung vom System bzw. nach einem Systemstart sind die ursprünglichen Einstellungen wieder hergestellt. Das kann ganz praktisch sein, um sich an einen vernünftigen Wert heranzutasten und so z.B. auszuprobieren, ob die Änderungen einen sinnvollen Effekt gebracht haben.
Um den Kernel-Parameter dauerhaft zu setzen, müssen wir diesen in eine Konfigurationsdatei eintragen: In der Datei /etc/sysctl.conf (Anm.: Wenn es diese Datei noch nicht gibt, muss sie neu angelegt werden)
Hierfür öffnen wir die Datei mit einem Editor und fügen folgende Zeile ein:
fs.inotify.max_user_watches=524288
Nach dem Speichern möchten die Änderungen noch aktiviert werden. Hierfür rufen wir folgenden Befehl auf:
sudo sysctl -p
Somit sollte die maximale Anzahl der überwachten Objekte im Dateisystem auf ca. eine halbe Million erhöht worden sein. Die Misstrauischen unter uns starten das System neu und überprüfen, ob die Änderungen einen Reboot überstanden haben.
Überwachung kostet RAM
Einige Worte zum Ressourcenverbrauch, die mit den Inotify-Kernelparameter einhergehen. So ganz spurlos geht die Überwachung des Dateisystems nicht am Hauptspeicher vorbei. Als Richtwert gilt: Jedes im Dateisystem überwachte Objekt (Dateien, Ordner) beansprucht auf einem 32-Bit-System den Hauptspeicher mit 540 Bytes und auf einem 64-Bit-System mit dem doppelten Wert, also mit ca. 1 KByte.
Mit dem hier verwendeten Beispiel von ca. einer halben Million überwachten Dateien kämen wir also als Oberwert auf eine maximale Belastung des Hauptspeichers von ca. 256 MB RAM (32 Bit) bzw. auf ca. 512 MB RAM (64 Bit). Da der Kernelspeicher nicht in die Swap-Datei ausgelagert wird, geht der Speicherbedarf übrigens immer auf Kosten des physikalischen Speichers. Auf halbwegs modernen Systemen sollte dies aber ein immer noch verträglicher Wert sein.
Seit Linux 2.6.13
Die Inotify-Funktion wurde von John McCutchan und Robert Love entwickelt und im Jahr 2005 von Linus Torvalds für die Aufnahme in den Linux Kernel 2.6.13 freigegeben. Wer sich in die Thematik vertiefen möchte, dem empfehle ich einen Artikel von Robert Love, in dem er auf die Interna detailliert eingeht.