Linux tips

Netwerkgrafiekjes in de terminal

Als je de huidige upload- en downloadsnelheden van je netwerkverbindingen in de terminal wilt bekijken, moet je zeker speedometer eens uitproberen. Het programma toont in blokkerige grafiekjes je netwerksnelheid en toont daarbij ook – handig! – de cijfers bij de pieken. Met de opties -rx en -tx krijg je de download- respectievelijk uploadsnelheid te zien voor de netwerkinterface die je erbij vermeldt. Allebei kan ook, waardoor beide grafieken onder elkaar worden getoond:

 

$ speedometer -rx wlan0 -tx wlan0

 

Wil je de grafieken liever naast elkaar zien, gebruik dan de optie -c (van columns). Standaard gebruikt speedometer de eenheid bytes per seconde, maar met de optie -s krijg je de uitvoer in bits per seconde te zien. En wil je liever een lineaire schaal in plaats van de logaritmische, die standaard wordt gebruikt, dan komt de optie -l van pas.

Je kunt speedometer echter ook gebruiken om de snelheid van een bestand dat je aan het downloaden bent te visualiseren. Gebruik dan eenvoudigweg de bestandsnaam als parameter, bijvoorbeeld:

 

$ speedometer Downloads/nieuwste_opensuse.iso

 

Speedometer bekijkt dan hoe snel de bestandsgrootte toeneemt en toont je dan die snelheid. Geef je als tweede parameter de grootte in bytes op die het bestand in totaal moet hebben, dan krijg je onderaan ook nog een vooruitgangsbalk te zien en de geschatte tijd om de rest te downloaden. Al met al is speedometer dus een handige tool om grote downloads vanuit een terminalvenster in het oog te houden.

http://excess.org/speedometer

 

Stop overbodige Enter-toets
Ik heb een ergonomisch toetsenbord van Bakker Elkhuizen met een afzonderlijk numeriek toetsenbordje dat je ook als eenvoudige rekenmachine kunt gebruiken. Het heeft een handige functie: als je in de rekenmachinemodus een berekening hebt uitgevoerd, kun je op een SEND-toets drukken om het resultaat naar je computer te sturen. Leuk, maar die functie wordt bijna volledig onbruikbaar gemaakt, doordat de makers hebben besloten om na het doorsturen van de cijfers altijd ook een Enter-toets door te sturen. Als ik in een XML-bestand het resultaat van een berekening plaats, moet ik dan altijd met Backspace de Enter-toets ongedaan maken. En als ik cijfers naar een webformulier verstuur, wil ik niet altijd onmiddellijk het formulier met de Enter-toets voltooien.

Na een tijdje was ik het beu en zocht ik naar een oplossing. Ik draaide het programma xev in een terminalvenster en gebruikte de rekenmachinemodus met de SEND-toets. Daarna keek ik in de uitvoer van xev wat er was gebeurd. Ik zag achtereenvolgens KeyPress en KeyRelease events voor Num_Lock, de cijfers van het resultaat, KP_Enter en nog eens Num_Lock. Mijn hoofdtoetsenbord heeft alleen een Return-toets en het numerieke toetsenbord alleen een Enter-toets. Ik zou in principe dus de Enter-toets kunnen uitschakelen en de werking van de Return-toets kunnen behouden. Gelukkig kan dat eenvoudig met xmodmap. Daarvoor moeten we eerst de keycode van de Enter-toets te weten komen:

 

$ xmodmap -pke|grep KP_Enter

keycode 104 = KP_Enter NoSymbol KP_Enter

 

De juiste keycode is afhankelijk van uw toetsenbord. Daarna kunnen we de Enter-toets uitschakelen door aan de keycode geen enkel toetssymbool toe te kennen:

 

$ xmodmap -e ‘keycode 104=’

 

Toen ik dit had gedaan, werd na het indrukken van de SEND-knop op het numerieke toetsenbord het resultaat van mijn berekening naar de computer gestuurd, maar zonder een Enter-toets. Het enige nadeel is dat de Enter-toets nu ook in de normale modus niet meer werkt. De meeste programma’s maken echter geen onderscheid tussen Enter en Return, dus voorlopig kunnen we daarmee leven. We hebben het xmodmap -e-commando in de opstartprogramma’s van GNOME gezet – iets soortgelijks kan in KDE of in ~/.xinitrc voor window managers – zodat de instelling elke keer behouden blijft.

 

Gebruikersdiensten starten met systemd
Systemd, dat al enige tijd wordt gebruikt door Fedora en openSUSE als init-systeem, kan niet alleen allerlei systeemdiensten starten, maar ook diensten die onder gebruikersaccounts moeten draaien. Stel bijvoorbeeld dat u altijd een screen-sessie opstart om met uw favoriete IRC-client irssi altijd online te zijn, dan maakt u daarvoor gewoon een systemd service unit aan. Plaats in het bestand /etc/systemd/system/irssi@.service de volgende inhoud:

 

[Unit]

Description=IRC-client in screensessie

After=network.target

[Service]

Type=forking

User=%i

ExecStart=/usr/bin/screen -dm -S IRC irssi

ExecStop=/usr/bin/screen -S IRC -X quit

[Install]

WantedBy=multi-user.target

 

In het ExecStart-commando starten we screen met de juiste opties. De optie -dm wil zeggen dat we een nieuwe sessie aanmaken, maar er nog niet mee verbinden (aangezien dat op de achtergrond wordt opgestart en niet in een terminal). Met -S IRC geven we als sessienaam IRC. Tot slot geven we helemaal achteraan die regel mee dat het programma irssi in de sessie moet worden opgestart. Het ExecStop-commando is eenvoudiger: daar zeggen we met -X quit dat we het screen-commando quit (kijk in de manpagina voor een lijst van alle commando’s) aan de sessie doorgeven die we met -S IRC benoemen.

Als je nu die service unit voor je gebruiker wilt starten, kan dat als volgt (mijn gebruikersnaam is koan):

 

$ sudo systemctl start irssi@koan.service

 

De service inschakelen zodat deze in het vervolg onmiddellijk bij het opstarten van je systeem wordt aangeroepen, kan als volgt:

 

$ sudo systemctl enable irssi@koan.service

 

Dat kan zelfs voor diverse gebruikers tegelijk: geef dan eenvoudigweg bij het starten en inschakelen van de service unit telkens een andere gebruikersnaam. Is je distributie eenmaal opgestart, dan hebben al die gebruikers standaard een screen-sessie met irssi draaien, zelfs als ze nog niet zijn ingelogd. Hetzelfde principe kunt u gebruiken voor services die onder een bepaalde gebruikersnaam willen draaien, zoals MPD.

 

Grote schoonmaak in uw muziekcollectie

Uw muziekcollectie is in al die jaren waarschijnlijk gegroeid uit allerlei bronnen die het niet zo nauw namen met de correctheid van ID3-tags en andere informatie. Met het programma MP3 Diags kunt u uw verzameling in één keer scannen op alles wat er mis kan lopen: ID3-tags in een verkeerde tekenset, ontbrekende normalisatiegegevens voor audio, incorrecte plaatsing van headers enzovoort. Het programma herkent een vijftigtal van dit soort problemen. Na het scannen van uw collectie krijgt u bij elk bestand te zien welke problemen erin voorkomen.

Bovendien kan MP3 Diags ook veel van die problemen oplossen. Met enkele knoppen kunt u een aantal voorgedefinieerde transformaties uitvoeren op alle gevonden bestanden. U kunt zelf ook transformaties definiëren. Let wel op: standaard overschrijft MP3 Diags de originele muziekbestanden, dus vink zeker aan dat er een back-up moet worden gemaakt van bestanden die worden aangepast. De interface van het programma is niet zo heel duidelijk, maar dat er zoveel problemen met één programma kunnen worden opgelost, is wel vrij uniek.

http://mp3diags.sourceforge.net

 

Kernelnieuws
Linux 3.10

De multi-platform ondersteuning voor ARM wordt steeds beter: in Linux 3.10 zijn er tal van platforms toegevoegd, waaronder de BCM2835 (de processor in de Raspberry Pi) en de Nvidia Tegra. Verder is er op het gebied van virtualisatie weer veel nieuws: geneste virtualisatie op Intel-processors is verbeterd in KVM en de hypervisor draait nu ook op sommige Mips32-processors. Xen ondersteunt nu op de ARM-architectuur ook symmetric multiprocessing (SMP). Qemu heeft bovendien een nieuwe handige driver gekregen: pvpanic, die de gastheer kan vertellen wanneer een virtuele gast gecrasht is. Dat zou zowel KVM als Xen ten goede moeten komen. 

Linux 3.10 gedraagt zich ook beter als gast van Hyper-V: niet alleen is er nu een framebuffer grafische driver voor Hyper-V Synthetic Video met een Full HD-resolutie, er is ook een driver waarmee een Windows-gastheer een Linux-gast kan opdragen om alle bestandssystemen in een consistente toestand te krijgen, zodat de gastheer een snapshot kan maken voor een back-up. Tot slot kan een Linux-gast onder Hyper-V nu ook zijn geheugen at run-time verhogen.

Ontwikkelaars van Google hebben het algoritme Tail Loss Probe (TLP) in Linux 3.10 geïmplementeerd. Daardoor handelt de netwerkstack van Linux verloren pakketjes aan het einde van een TCP-transactie efficiënter af. Volgens metingen op Googles webservers vermindert het algoritme time-outs voor hertransmissie met vijftien procent en kort het HTTP-responstijden met gemiddeld zes procent in. Er zijn ook wat nieuwe netwerkdrivers toegevoegd en de ondersteuning van IPv6 over FireWire-netwerkverbindingen is verbeterd. Dankzij een andere Google-ontwikkelaar beschikt de kernel nu over bcache, een manier om één schijf (bijvoorbeeld een snelle SSD) als cache voor een andere schijf (bijvoorbeeld een tragere maar grotere harde schijf) te laten werken. In Linux 3.9 was al een soortgelijke oplossing opgenomen, dm-cache, maar beide zijn geoptimaliseerd voor andere situaties: bcache is vooral goed als je veel kleine schrijfopdrachten uitvoert.

http://kernelnewbies.org/Linux_3.10