Showing 1 changed files with 15 additions and 2 deletions
+15 -2
analyse-votes-AN
... ...
@@ -2,6 +2,19 @@
2 2
 
3 3
 set -e
4 4
 
5
+# on n'autorise qu'une seule exécution à la fois
6
+process_token=$(mktemp --dry-run /dev/shm/XXXXXXXXXXXXXXXX)
7
+token_file="$process_token.${0##*/}"
8
+touch $token_file
9
+while true; do
10
+    if ls -1rt /dev/shm/*."${0##*/}" | head -1 | grep -q "^$token_file$"; then
11
+        # c'est notre tour
12
+        break
13
+    else
14
+        sleep 5
15
+    fi
16
+done
17
+
5 18
 for tool in sqlite3 getopt mktemp w3m jq; do
6 19
     which $tool > /dev/null 2>&1 || {
7 20
         echo missing tool $tool
... ...
@@ -413,7 +426,7 @@ function save_database () {
413 426
     else
414 427
         echo "je ne peux rien faire avec $database !"
415 428
     fi
416
-    rm -f "$in_ram_database" "$tempfile"
429
+    rm -f "$in_ram_database" "$tempfile" "$token_file"
417 430
 }
418 431
 
419 432
 function dernier_scrutin_public () {
... ...
@@ -572,7 +585,7 @@ done
572 585
 
573 586
 test "$options_error" = $true_flag && exit 1
574 587
 
575
-in_ram_database=$(mktemp --dry-run /dev/shm/XXXXXXXXXXXX)
588
+in_ram_database=$process_token.db
576 589
 if test -r "$database"; then
577 590
     cp "$database" "$in_ram_database"
578 591
 else