Linux Tips: Bewaak je bestanden!

Wil je graag specifieke acties uitvoeren als bestanden in een map aangepast worden, dan kun je daarvoor een Makefile aanmaken en telkens de opdracht make intypen als de bestanden weer eens aangepast zijn. Maar waarom zou dat niet automatisch kunnen? De Linux-kernel heeft daarvoor het inotify-subsysteem, recente FreeBSD- en OpenBSD-versies hebben kqueue, OS X heeft FSEvents en in Solaris en illumos is hetzelfde mogelijk met port_create. 

Nu heeft een ontwikkelaar van Facebook een programma onder de Apache 2.0-licentie uitgebracht dat op al die systemen werkt, genaamd Watchman. Het biedt een eenvoudige commandline-interface aan om automatisch te luisteren naar veranderingen in bestanden en indien gewenst na die veranderingen acties uit te voeren.

 Het programma is nog te jong om in de standaard repository's van de bekende Linux-distributies aanwezig te zijn, maar de broncode is vrij eenvoudig te compileren:

$ git clone https://github.com/facebook/watchman.git

$ cd watchman

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

 

Installeer daarvoor eerst Git, automake, autoconf en nog enkele andere ontwikkeltools. Onder Debian of Ubuntu gaat dat met sudo apt-get install build-essential.

Je laat Watchman naar een directory luisteren met de volgende opdracht:

 $ watchman watch $DIRECTORY

 Na een tijdje krijg je een JSON-code te zien met de versie van Watchman en het pad van de directory. Daarna kun je een trigger opstellen op bestanden in die directory. Gaat het bijvoorbeeld om CSS-bestanden die je wilt verkleinen, dan gebruik je het volgende commando:

$ watchman -- trigger $DIRECTORY minify '*.css' -- minify-css

Hierin is minify de naam die je aan de trigger geeft. Daarna komt het patroon waaraan de bestandsnamen moeten voldoen. Het uiteindelijke commando dat op de bestanden uitgevoerd wordt, komt op het laatst, hier het programma minify-css.

Met watchman watch-list krijg je een lijst van alle directory's waarnaar Watchman luistert en met watchman watch-del $DIRECTORY verwijder je een directory uit de lijst. Met watchman trigger-list $DIRECTORY vraag je alle triggers op die aan een directory verbonden zijn en met watchman trigger-del $DIRECTORY $TRIGGERNAME verwijder je een trigger.

Bekijk zeker ook de website van het project, waar meer uitleg bij alle subcommando's te vinden is. En tot slot een belangrijke opmerking: Watchman werkt niet op bestandssystemen over een netwerk of gedistribueerde bestandssystemen, want het programma hangt af van de file notifications van het besturingssysteem. https://facebook.github.io/watchman/

NEDLINUX FORUM

Het nederlandse linuxforum
Voor beginners en pro’s

 

 

 

 

E-mailadres



 

 

Nieuwste editie:

Linuxmag op Facebook

@linuxmagnl op Twitter

linuxmagNL Tegenwoordig beschikken de meeste printers en scanners over een draadloze netwerkverbinding. Het is erg handig om v… https://t.co/ODTCs3XpzU
linuxmagNL Het internet is van oorsprong ingericht op een vrije vorm van informatiedeling waarbij gedecentraliseerde systemen… https://t.co/zZ9S70tsDu
linuxmagNL Wil je je tuin in het oog houden met temperatuur- en vochtsensoren en misschien zelfs een webcam? Maar heb je geen… https://t.co/oilQdX91J3