Observer un fichier pour des changements peut être accompli avec un LaunchAgent. Par exemple, créez un fichier plist à ~/Library/LaunchAgents/watch.and.lol.plist
et remplissez-le avec ce contenu :
Label
watch.and.lol
ProgramArguments
/Users/Shared/changeAction.sh
-force
WatchPaths
/private/var/radmind/client/.radmindOnDemand
Assurez-vous maintenant que le fichier /private/var/radmind/client/.radmindOnDemand
existe. Puis chargez le launchagent avec la commande $ launchctl load ~/Library/LaunchAgents/watch.and.lol.plist
. Dès que le fichier ~/Library/LaunchAgents/watch.and.lol.plist
n'existera plus, ce job du launchagent sera déchargé.
Écrivez maintenant un script shell qui surveille votre fichier pour des changements, comme :
chsum1=""
while [[ true ]]
do
chsum2=`md5 /private/var/radmind/client/.radmindOnDemand`
if [[ $chsum1 != $chsum2 ]] ; then
compile
chsum1=`md5 /private/var/radmind/client/.radmindOnDemand`
fi
sleep 2
done
Remarque : ce script shell nécessite un travail supplémentaire pour être efficace. Actuellement, il vérifie toutes les 2 secondes (sleep 2
). Il est préférable de terminer le script après l'exécution de la commande compile
. Cela nécessite de stocker la sortie de la commande de hachage md5 pour qu'elle puisse survivre à la fin et au relancement de ce script shell.