Dit artikel is geschreven door Toon van Daele en Koen Vervloesem.
De Linux-desktopomgeving Gnome is gekend om zijn spartaanse instellingen. Handig voor beginners die daardoor niet overweldigd worden, maar de powerusers zitten vaak met hun handen in het haar. Gelukkig krijg je met het programma gsettings eenvoudig toegang tot de database van GSettings, het systeem van Gnome om instellingen op te slaan. Elk programma dat van GSettings gebruikmaakt, zet zijn instellingen in een ‘schema’, zoals het schema org.gnome.desktop.interface voor de Gnome-desktopinterface.
Elk schema bevat ‘sleutels’, zoals show-battery-percentage. Zo toont Gnome het batterijpercentage niet in de statusbalk naast het batterij-icoontje. Met één opdracht is dat eenvoudig te verhelpen:
gsettings set org.gnome.desktop.interface show-battery-percentage true
Je kunt de huidige waarde van een sleutel in GSettings opvragen:
gsettings get org.gnome.desktop.interface show-battery-percentage
En je kunt zelfs een beschrijving van de sleutel opvragen. Je krijgt dan te zien wat de sleutel juist doet:
gsettings describe org.gnome.desktop.interface show-battery-percentage
Sommige sleutels accepteren slechts specifieke waardes. Die kun je gelukkig ook opvragen, zoals in:
gsettings range org.gnome.settings-daemon.plugins.power lid-close-battery-action
Alle sleutels op je systeem opvragen, gaat met:
gsettings list-recursively
Hierin kun je eenvoudig zoeken naar alle sleutels waarvan de naam battery bevat:
gsettings list-recursively | grep -i battery
Bekijk de lijst met sleutels zeker eens. Het zijn er duizenden. Enkele voorbeelden van instellingen die je zou kunnen aanpassen:
gsettings describe org.gnome.desktop.notifications show-in-lock-screen
gsettings describe org.gnome.login-screen banner-message-text
gsettings describe org.gtk.Settings.FileChooser show-hidden
Wil je wat meer hulp bij het instellen of verkennen van de instellingen van GSettings, dan komt het grafische programma dconf-editor van pas. Je kunt hiermee door de boomstructuur van de schema’s navigeren of een zoekterm in het zoekveld intypen om specifieke sleutels te vinden.
Als een sleutel afwijkt van de standaardwaarde, wordt die in het vet getoond, waardoor je onmiddellijk in een lijst sleutels ziet wat je al aangepast hebt. En als je een sleutel in dconf-editor opent, krijg je alle mogelijke informatie erover te zien, zoals een beschrijving en niet alleen de huidige waarde maar ook de standaardwaarde.
Als je een sleutel opent die nog zijn standaardwaarde heeft, dien je eerst de schakelaar Standaardwaarde gebruiken uit te schakelen. Daarna kun je de waarde instellen. Bij een waarde van het type opsomming, zoals voor de sleutel lid-close-battery-action, kun je op de waarde klikken om een keuzemenu met de mogelijke opties te openen. Maak je keuze en klik dan onderaan rechts op Toepassen om je wijzigingen op te slaan. Met één klik op de schakelaar stel je weer de standaardwaarde in.
Met dconf-editor krijg je toegang tot alle verborgen instellingen van Gnome.
Met de opdracht vcgencmd lees je op een Raspberry Pi allerlei hardwareparameters uit. Helaas geeft het programma zelf niet veel hints over de werking en documentatie is schaars. Bekijk welke opdrachten vcgencmd (in Raspbian zit dit programma in het pakket libraspberrypi-dev) ondersteunt met:
vcgencmd commands
Meer dan een lijstje van mogelijke subopdrachten krijg je niet te zien. En naar de opties van elk van die opdrachten is het raden. Een goede bron van de belangrijkste zaken die je met vcgencmd kunt doen, is https://elinux.org/RPI_vcgencmd_usage.
Zo is het programma handig als je de exacte firmwareversie van je Pi wilt weten:
vcgencmd version
Je kunt ook opvragen hoe het intern geheugen tussen de cpu en gpu opgesplitst is:
vcgencmd get_mem arm
vcgencmd get_mem gpu
Met vcgencmd lees je ook eenvoudig de kerntemperatuur van de systeemchip uit:
vcgencmd measure_temp
Bij normaal gebruik zou die temperatuur rond de 60-70 graden Celsius moeten liggen. Overschrijdt de kerntemperatuur de 80 graden, dan schakelt de processor zijn snelheid terug. Heb je een beeldscherm aangesloten, dan krijg je bovendien bovenaan rechts een rood pictogram van een thermometer te zien.
Wil je weten of de processor zijn snelheid heeft teruggeschakeld, dan kan dat ook:
vcgencmd get_throttled
Als je 0x20002 te zien krijgt, is de processorsnelheid momenteel teruggeschakeld; krijg je 0x20000 te zien, dan is de snelheid op een bepaald moment sinds de Pi opgestart is teruggeschakeld, maar draait hij ondertussen weer op normale snelheid.
De huidige kloksnelheid van je Pi vraag je op met:
vcgencmd measure_clock arm
Je krijgt dan de frequentie in Hz te zien. Naast arm kun je ook nog core, h264, isp, v3d, uart, pwm, emmc, pixel, vec, hdmi of dpi opgeven (hiervan is de eerste het belangrijkste).
Je kunt ook de spanning van verschillende interne componenten opvragen:
vcgencmd measure_volts core
In plaats van core kun je ook de spanning van andere componenten opvragen: sdram_c, sdram_i en sdram_p.
Soms is het interessant om in een programma of script te weten welk model van de Raspberry Pi je hebt. Gelukkig houdt Raspbian dat bij in de zogenoemde device tree en je kunt dat apparaatmodel dan ook eenvoudig opvragen:
cat /proc/device-tree/model
Voor een Raspberry Pi 3B+ krijg je dan bijvoorbeeld Raspberry Pi 3 Model B Plus Rev 1.3 te zien, waarbij de 1.3 voor de revisie van de printplaat staat.
Wil je exact weten welke systeemchip je Pi draait en wat het serienummer van je exemplaar is, bekijk dan de uitvoer van de volgende opdracht:
cat /proc/cpuinfo
Heb je een of meer websites, dan wil je daar wellicht afbeeldingen voor gebruiken die geoptimaliseerd zijn voor publicatie op het web. Dat kan met het opdrachtregelcommando Pingo, beschikbaar voor Windows en Linux (https://css-ig.net/pingo).
Het aantal ondersteunde formaten is weliswaar beperkt, maar de populairste webformaten zitten er bij: jpg, png, webp en apng (animated png). Je kunt onder meer metadata strippen, afbeeldingen schalen en roteren, het compressietype instellen (met en zonder kwaliteitsverlies), transformaties uitvoeren (zoals het uitschakelen van transparantie of omzetten naar grijswaarden) enzovoort. Aangezien de verwerkingen onmiddellijk worden toegepast, maak je best gebruik van bestandskopieën. Enkele voorbeelden.
Automatische compressie:
pingo -auto <bestand>
Compressie door een beperkt aantal kleuren in het palet:
pingo -pngpalette=X <bestand)>
Hierbij is X een getal is tussen 1 (laagste kwaliteit) en 100 (hoogste kwaliteit).
Transparantie weghalen en vervangen door een eigen achtergrondkleur:
pingo -notrans -rgb: X X X <bestand>
Een bijna verliesloze conversie uitvoeren naar een webp-formaat met instelbaar filter (in stijgende kwaliteitsvolgorde, met waarde X van 1 tot 100):
pingo -webp-filter=X <bestand>
Een overzicht van alle parameters met uitleg en grafische voorbeeldweergaves vind je op https://css-ig.net/articles.
De gevraagde bewerking wordt direct toegepast op het doelbestand.
Windows voert regelmatig allerlei automatische onderhoudstaken uit, zoals tijdssynchronisatie, defragmentatie en opschoonoperaties.
Je krijgt een overzicht van deze taken met het volgende PowerShell-commando:
get-scheduledtask | ? {$_.Settings.MaintenanceSettings} | Out-GridView
Er verschijnt een venster met een taakoverzicht, inclusief status. Een ervan is SilentCleanup: die schoont automatisch de cache van de miniatuurafbeeldingen op zoals je die in Verkenner ziet. Dat maakt weliswaar wat schijfruimte vrij, maar een volgende keer vergt het weer extra tijd om die cache op te bouwen. Als je dat wilt, kun je deze taak uitschakelen vanuit de Taakplanner: druk op Windows-toets+R, tik taskschd.msc in gevolgd door Enter en ga naar Task Scheduler-bibliotheek / Microsoft / Windows.
Windows voert standaard heel wat automatische onderhoudstaken uit.
Met het programma fuser in Linux identificeer je vanaf de terminal eenvoudig alle programma’s die een specifiek bestand open hebben. Bijvoorbeeld alle programma’s die de huidige directory open hebben:
fuser .
Je merkt dat je nu een hele hoop getallen met de letter c erachter te zien krijgt. De getallen zijn de proces-ID’s van de processen die de directory gebruiken. De c betekent dat het proces de directory als huidige directory gebruikt. Die proces-id’s zeggen niet veel, dus meestal gebruik je fuser met de optie -v voor de uitgebreide uitvoer (in het Engels ‘verbose’):
fuser -v .
Nu krijg je in tabelvorm voor elk proces dat het bestand gebruikt de gebruiker, het proces-ID, de soort toegang (de c hierboven) en de naam van het proces te zien. Als je deze opdracht in je persoonlijke map (/home/gebruikersnaam) uitvoert, zie je dus alle programma’s die deze gebruiken.
Een andere handige optie is -m waarmee je alle programma’s te zien krijgt die een bestand op het gespecificeerde bestandssysteem open hebben. Zo weet je welke programma’s je moet afsluiten om het bestandssysteem te kunnen afkoppelen:
fuser -v -m /media/usbstick
Voor volledige informatie dien je fuser overigens als root uit te voeren.
Met fuser kun je ook de programma’s afbreken die een specifiek bestand open hebben. Dit kun je gebruiken als je bijvoorbeeld meerdere keren een specifiek programma opgestart hebt en voor elk van hen wilt bevestigen of ontkennen dat je het wilt afbreken:
fuser -v -k -i /usr/bin/rsync
Als je een programma opstart, is dat programmabestand immers open. Met de optie -k (‘kill’) vragen we om het programma dat dit bestand open heeft af te breken. En met de optie -i (‘interactive’) vragen we telkens om bevestiging. Aan de hand van het proces-ID kun je dan nagaan of je dit programma wilt afbreken of niet. Zonder die laatste optie worden alle programma’s die aan je vraag voldoen zonder pardon afgebroken. Wees hier heel voorzichtig mee!
Overigens werkt de optie -k ook om andere signalen naar de programma’s te sturen. Met fuser -k -HUP stuur je bijvoorbeeld het zogenoemde HUP-signaal, waarop veel programma’s reageren door hun configuratie opnieuw in te lezen. Met fuser -l krijg je de lijst van herkende signalen te zien.
In Linux is alles een bestand, dus kun je met fuser ook opvragen welke processen een specifieke poort gebruiken:
fuser -v -n tcp 22
Als het om een bekende poort gaat, kun je ook de naam van de poort gebruiken:
fuser -v -n tcp ssh
Ben je geïnteresseerd in een poort over het udp-protocol, dan gebruik je udp in plaats van tcp.