/dev/null en zo

Iedereen kent wel het speciale device /dev/null onder Linux, het digitale zwarte gat. Maar het besturingssysteem kent nog een aantal andere speciale devices, die in allerlei scripts nuttig kunnen zijn.

Linux maakt net als heel wat andere UNIX-achtige besturingssystemen een aantal speciale devices aan die nuttig kunnen zijn in je scripts. Een kort overzicht:

/dev/null
Dit apparaat is op alle UNIX-systemen een digitaal zwart gat: alles wat je ernaar schrijft, verdwijnt. In jargon wordt /dev/null dan ook wel eens de bit bucket genoemd. Het apparaat geeft altijd de boodschap terug dat schrijven gelukt is. Als je het bestand leest, krijg je onmiddellijk een EOF (end of file), wat het handig maakt om te testen hoe je scripts of programma’s reageren op een leeg bestand.

/dev/zero
Het apparaat /dev/zero is een onophoudelijke bron van nultekens (ASCII 0x00) als je het leest. Dit wordt typisch gebruikt om gegevens te overschrijven met nullen, bijvoorbeeld als je een nieuw bestand van een megabyte wil aanmaken (dd if=/dev/zero of=nullen count=1024 bs=1024) of als je op een harde schijf alle sporen wil wissen voor je ze op eBay plaatst. Je kunt ook naar /dev/zero schrijven, en dan gedraagt het bestand zich net zoals /dev/null als een zwart gat.

/dev/full
Dit Linux-specifieke device is een bestand dat altijd de foutmelding ENOSPC (“No space left on device”) teruggeeft wanneer je ernaar schrijft. Dat maakt het heel handig om het gedrag van je scripts of programma’s te controleren wanneer ze met een volle schijf te maken hebben. Je kunt het bestand ook lezen, en dan geeft het een oneindige stroom van nultekens, net zoals /dev/zero dus.

/dev/random
Als je dit bestand onder Linux leest, krijg je een reeks van (pseudo-)willekeurige tekens, wat handig is voor het aanmaken van willekeurige wachtwoorden of encryptiesleutels. Wanneer de ‘entropy pool’ van willekeurige bytes op is, dan blokkeert het lezen van dit bestand tot er weer genoeg willekeur voorhanden is. Daardoor garandeert het dat je niet per ongeluk een te regelmatige tekenreeks inleest waarvan je ten onrechte denkt dat ze willekeurig genoeg is om er een wachtwoord op te baseren.

De willekeur wordt overigens aangeleverd door onder andere device drivers (voor je muis of voor je geluidskaart), of specifieke RNG (random number generator) hardware. Het bestand /proc/sys/kernel/random/entropy_avail toont je het aantal willekeurige bits dat er in de entropy pool aanwezig is; een volledig pool is 4096 bits groot, maar als er weinig bronnen van willekeur zijn, zoals bijvoorbeeld op virtuele servers, kan de waarde hiervan heel laag zijn.

/dev/urandom
Heb je niet zo’n hoge eisen over de willekeur van een tekenreeks, dan kun je ook /dev/urandom inlezen, dat een reeks van pseudo-willekeurige tekens teruggeeft maar nooit blokkeert. Daardoor kan de uitvoer theoretisch gezien wel eens wat minder willekeurig zijn, maar voor gegevens die slechts kortstondig gebruikt worden is dit goed genoeg. Je kunt er bijvoorbeeld mee testen of je geluidskaart werkt: cat /dev/urandom > /dev/dsp. FreeBSD kent overigens alleen een niet-blokkerende bron van willekeur, die daar /dev/random heet, en /dev/urandom is er een symbolische link naar /dev/random.

Geplaatst in Linux
%d bloggers op de volgende wijze: