Sur la machine srv-lin-01. Lire le ticket, agir dans le terminal, puis vérifier.
Ticket 5757, ouvert par Léna Guérin : ce matin, le LIMS du laboratoire d'autocontrôle affichait en double une partie des résultats d'hier soir, et le bulletin quotidien de la qualité de l'eau comptait deux fois les mêmes mesures de chlore. Les analyseurs du laboratoire (chlore, turbidité, pH) déposent leurs résultats dans /srv/automates/sortie ; le script /opt/scripts/import-resultats.sh les envoie au LIMS un par un, les note dans /srv/lims/importes.log, puis les retire du dossier. Il est lancé toutes les 5 minutes par la table cron du compte de service svc-lims. En journée, il trouve quelques fichiers et termine en quelques secondes. Le soir, quand les analyseurs vident leur file d'un coup, il en a pour bien plus de 5 minutes.
Protéger la tâche pour que deux importations ne tournent jamais en même temps : une exécution qui trouve la précédente encore en cours doit renoncer aussitôt, sans attendre son tour. La tâche doit continuer de partir toutes les 5 minutes, sous le compte svc-lims.
Rappel
Le Planificateur de tâches de Windows sait refuser de lancer une tâche déjà en cours (« Ne pas démarrer une nouvelle instance »). cron ne le sait pas : il lance la tâche à l'heure dite, que la précédente ait fini ou non. Le verrou dont parle le chapitre comble ce manque.
flock -n fichier commandeprend un verrou sur le fichier, puis lance la commande. Si une autre exécution tient déjà le verrou, il renonce aussitôt, sans lancer la commande. Sans-n, il attend que le verrou se libère.- Le verrou se libère de lui-même quand la commande se termine, même en erreur. Le fichier reste, et c'est sans importance : ce qui compte est le verrou posé dessus, pas la présence du fichier.
- Le fichier est créé, ou ouvert, par le compte qui lance la tâche : il doit pouvoir le faire. Sur cette machine,
/var/lockest réservé à root ;/tmpest ouvert à tous. sudo crontab -u svc-lims -laffiche la table du compte de service,sudo crontab -u svc-lims -el'ouvre dans nano.
Boîte à outils
Un clic écrit la commande au curseur, sans la lancer.
Indications
Le ticket se prépare dès que la machine est prête.
Ce terminal ouvre une vraie machine Linux, srv-lin-01, qui tourne dans la page.
Environ 14 Mo à télécharger la première fois, et 300 Mo de mémoire. Sur un téléphone, le travail se fait à l'étroit : un ordinateur avec un clavier convient mieux.