{"id":188,"date":"2020-04-03T16:13:08","date_gmt":"2020-04-03T14:13:08","guid":{"rendered":"https:\/\/www.delixirpro.com\/blog\/?p=188"},"modified":"2020-04-03T16:13:09","modified_gmt":"2020-04-03T14:13:09","slug":"cron-utiliser-flock-pour-eviter-quune-tache-planifiee-ne-se-lance-si-elle-est-deja-en-cours-dexecution","status":"publish","type":"post","link":"https:\/\/www.delixirpro.com\/blog\/2020\/04\/03\/cron-utiliser-flock-pour-eviter-quune-tache-planifiee-ne-se-lance-si-elle-est-deja-en-cours-dexecution\/","title":{"rendered":"Cron : utiliser Flock pour \u00e9viter qu&rsquo;une t\u00e2che planifi\u00e9e ne se lance si elle est d\u00e9j\u00e0 en cours d\u2019ex\u00e9cution."},"content":{"rendered":"\n<p>Le planificateur de t\u00e2ches de Linux (Cron) ne dispose pas des options avanc\u00e9es de son homologue sous Windows pour g\u00e9rer la simultan\u00e9it\u00e9 des t\u00e2ches.<\/p>\n\n\n\n<p>En effet, si vous planifiez une t\u00e2che cron, toutes les 5 minutes par exemple (*\/5 * * * * bash_dummy), que celle-ci soit toujours en cours d\u2019ex\u00e9cution ou non, elle se relancera. La t\u00e2che n&rsquo;attend pas la fin de la pr\u00e9c\u00e9dente ex\u00e9cution, ce qui va logiquement poser des soucis si votre t\u00e2che est longue \u00e0 s\u2019ex\u00e9cuter.<\/p>\n\n\n\n<p>Pour faire un sorte qu&rsquo;une t\u00e2che cron ne se lance pas plusieurs fois en simultan\u00e9, il faut lancer la t\u00e2che avec Flock. Flock permet de cr\u00e9er un lockfile (fichier de blocage) bas\u00e9 sur le processus appel\u00e9. Si le lockfile est en cours d&rsquo;utilisation, alors Flock ne lancera pas la t\u00e2che une deuxi\u00e8me fois. Pratique !<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/usr\/bin\/flock -n \/tmp\/my.lockfile \/usr\/local\/bin\/my_script<\/code><\/pre>\n\n\n\n<p>Flock est install\u00e9 sur Debian 9 et 10 par d\u00e9faut. Il existe \u00ab\u00a0run-one\u00a0\u00bb sous Ubuntu pour faire la m\u00eame chose.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le planificateur de t\u00e2ches de Linux (Cron) ne dispose pas des options avanc\u00e9es de son homologue sous Windows pour g\u00e9rer la simultan\u00e9it\u00e9 des t\u00e2ches. En effet, si vous planifiez une t\u00e2che cron, toutes les&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":189,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-tips"],"_links":{"self":[{"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/posts\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":1,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":190,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/posts\/188\/revisions\/190"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/media\/189"}],"wp:attachment":[{"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/media?parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/categories?post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.delixirpro.com\/blog\/wp-json\/wp\/v2\/tags?post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}