salut,
perso j'aurai eu tendance à utiliser des verrous, au début du programme on vérifie si les verrous existent, le cas échouant on lance une nouvelle instance et on active le verrou concerné
une méthode simple consiste à utiliser des fichiers et stocker dedans le PID de la tâche lancée (on lance commande & on récupère son pid via $?), ce qui permet de garder la trace du processus directement, on a plus qu'à vérifier avec ps s'il est lancé ou pas
un truc approchant (non-testé) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #!/bin/bash checkLock() { LOCKFILE="$1" ret=0 if [[ -e $LOCKFILE ]]; then if ps $(<$LOCKFILE) >/dev/null; then ret=0 fi else ret=1 fi return $ret } checkLock "/tmp/lock1" || { rsync machin truc & echo "$?" > "/tmp/lock1" } checkLock "/tmp/lock2" || { rsync bidule pouet & echo "$?" > "/tmp/lock2" }