Gekleurde man-pagina’s

We gebruiken allemaal man-pagina’s om hulp over opdrachten op te zoeken, maar die zien er vaak nogal saai uit. Doorgaans hebben ze maar één kleur en hoogstens wat onderstreepte of vette letters. Maar man ondersteunt kleuren.

Die ondersteuning hoef je alleen maar in de pager in te stellen die man gebruikt. Standaard is dat less. Maar je kunt ook een andere pager voor man instellen. Als je most instelt als pager, hoef je verder niets meer in te stellen: most heeft kleuren standaard al ingeschakeld.

Installeer dus most, bijvoorbeeld in Ubuntu:

sudo apt install most

En stel het programma dan als pager in:

export PAGER="most"

Als je nu bijvoorbeeld man most intypt, krijg je de man-pagina in kleur te zien. Wil je dit altijd, voeg de exportregel dan aan je ~/.bashrc toe, zodat je shell die altijd toepast.

Wat is de fysieke blokgrootte van je schijf?

Soms is het nuttig om te weten wat de fysieke blokgrootte is van je harde schijf of ssd, bijvoorbeeld als je er het bestandssysteem zfs op wilt gebruiken: als je er een zpool op aanmaakt, dien je de fysieke blokgrootte door te geven voor optimale prestaties.

Maar hoe kom je die blokgrootte te weten? Daarvoor bestaan verschillende manieren. Allereerst met lsblk, dat alle blokapparaten toont:

lsblk -o NAME,PHY-SEC,LOG-SEC --nodeps --exclude 7

We filteren hier de uitvoer: we tonen alleen de naam en de fysieke en logische blokgrootte van de apparaten. Met –nodeps voorkomen we dat ook alle partities getoond worden (die toch dezelfde blokgrootte hebben) en met –exclude 7 tonen we geen loop devices (wat er op Ubuntu veel zijn, één voor elke geïnstalleerde snap), omdat 7 het major device number is van loop devices.

Deze uitvoer van lsblk is handig als je de fysieke blokgrootte van al je schijven wilt zien. Ben je geïnteresseerd in één schijf, dan werkt iets als het volgende:

cat /sys/block/sdX/queue/physical_block_size
cat /sys/block/sdX/queue/logical_block_size

Hierin vervang je sdX door de apparaatnaam.

Het kan ook met fdisk:

sudo fdisk -l /dev/sdX | grep Sector

Gaat het om een ATA-apparaat (dus geen NVMe-SSD), dan kun je ook hdparm gebruiken:

sudo hdparm -I /dev/sdX | grep Sector

Bijna alle schijven geven als logische blokgrootte 512 bytes terug, om compatibiliteit met oudere besturingssystemen te garanderen. De fysieke blokgrootte is voor oudere schijven ook 512 bytes, maar voor nieuwere 4096 bytes.

Optimaliseer je laptopbatterij

Er bestaan allerlei tools om de batterijlevensduur van je laptop onder Linux te optimaliseren, maar die vereisen dat je manueel allerlei zaken instelt. Dat bracht Adnan Hodzic ertoe om een programma te schrijven dat dit automatiseert: auto-cpufreq.

Het programma monitort actief de toestand van je batterij, het processorverbruik en de systeembelasting en past op basis daarvan dynamisch de processorfrequentie aan. Het gevolg? Je kunt langer op je batterijlading werken, terwijl de prestaties voldoende hoog blijven.

Installeren kan met de broncode:

git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq
sudo ./auto-cpufreq-installer

Onder Ubuntu 20.04 kun je de snap installeren:

sudo snap install auto-cpufreq

Als je wilt zien wat auto-cpufreq zou doen, kun je het programma in monitormodus draaien:

sudo auto-cpufreq --monitor

Werk nu wat op je laptop en houd de status van auto-cpufreq in het oog. Als die in orde lijkt, start auto-cpufreq dan eens voor je huidige sessie:

sudo auto-cpufreq --live

Op deze manier kun je ervaren wat de impact is van auto-cpufreq op je systeem. De wijzigingen die het programma doorvoert, overleven geen reboot. Je blijft overigens ook de uitvoer zien die de optie –monitor je geeft. Ben je tevreden met het gedrag, installeer het programma dan als daemon:

sudo auto-cpufreq --install

Het draait dan als systemd-service. De status daarvan kun je opvragen met:

systemctl status auto-cpufreq

Je kunt ook op elk moment de logs bekijken met:

auto-cpufreq --log

Wil je het programma verwijderen, inclusief de systemd-service en de aanpassingen aan je systeem, dan kan dat eenvoudig:

sudo auto-cpufreq --remove

Voorlopig ondersteunt auto-cpufreq alleen Intel-processoren. Het programma veronderstelt ook dat je een batterij hebt, waardoor het alleen op laptops werkt. Maar ook voor desktops en servers zou er ondersteuning komen om het energieverbruik te optimaliseren.

github.com/AdnanHodzic/auto-cpufreq

Welke kernelconfiguratie draai je?

Soms is het handig om te weten welke kernelconfiguratie je draait. Is je huidige kernel gecompileerd met een specifieke optie of niet? Gelukkig is dat eenvoudig op te vragen:

cat /lib/modules/$(uname -r)/build/.config

De uname -r toont de release van je huidige kernel. Het bestand .config in de juiste directory bevat de configuratie waarmee de kernel voor je release gebouwd is.

Als je nu wilt weten of de kernel met een specifieke optie is gebouwd, dan grep je gewoon, bijvoorbeeld:

grep IKCONFIG /lib/modules/$(uname -r)/build/.config

De meeste distributies zetten de configuratie van je geïnstalleerde kernels ook in een bestand in je bootpartitie:

cat /boot/config-$(uname -r)

Op sommige systemen kun je de configuratie van de actuele draaiende kernel op een andere manier opvragen:

sudo modprobe configs
zcat /proc/config.gz

Dat werkt alleen als je kernel gebouwd is met de opties CONFIG_IKCONFIG en CONFIG_IKCONFIG_PROC. Op Raspberry Pi OS (Raspbian) is dat bijvoorbeeld het geval.

bat in plaats van cat

Een van de programma’s die je zeker vaak gebruikt, is cat om de inhoud van een bestand te bekijken. Een alternatief dat allerlei bestandsformaten ondersteunt en syntax coloring toepast, is bat, dat zichzelf omschrijft als “a cat clone with wings”. Het is beschikbaar in de repository’s van heel wat distributies, maar in Debian en Ubuntu dien je het niet als bat uit te voeren maar als batcat.

Bestanden in Markdown- of reStructuredText-formaat worden door bat mooi in kleur getoond, evenals Python-bestanden en code uit vele andere programmeertalen. Overigens toont bat vooraan ook altijd de bestandsnaam en links in de kantlijn regelnummers. En als je een bestand in een Git-repository toont, krijg je naast het regelnummer met een +, – of ~ te zien of die regel toegevoegd, verwijderd of aangepast is vergeleken met de laatste commit.

Ook man-pagina’s kun je met bat laten kleuren. Daarvoor dien je de volgende twee omgevingsvariabelen in te stellen:

export MANPAGER="sh -c 'col -bx | bat -l man -p'"
MANROFFOPT="-c"

Vervang bat in de eerste door batcat op Debian en Ubuntu. De optie -p onderdrukt overigens het tonen van de regelnummers en bestandsnaam.

Verder ondersteunt bat nog heel wat opties, die je zeker in man bat moet bekijken. Zo toont -A ook ‘non-printable characters’ zoals spaties, tabs en newlines. Met –list-themes krijg je alle kleurthema’s te zien. Je favoriete thema stel je dan in de omgevingsvariabele BAT_THEME in. Om te zien hoeveel bestandsformaten bat ondersteunt, voeg je de optie –list-languages toe.

Bekijk zeker ook eens de GitHub-repository github.com/eth-p/bat-extras met scripts die integreren met bat. github.com/sharkdp/bat