Bonjour,

Je me trouve dans un situation assez complexe.

Pour faire simple, j'ai plusieurs machines (debian 7 et 8) qui sont chacune connecté au même NAS.
Chacune de ses machine exécute le même code.
Le code à pour effet de mettre des fichiers sur le NAS, dans un dossier.

Seulement voila, au bout d'un moment, le NAS sature (normal).
J'ai donc besoin qu'une des machines connecté au NAS puisse le nettoyer.
Les machines ne peuvent ni communiquer entre elles ni même se voir (même via le NAS).

Comment puis-je faire en sorte qu'une machine "prenne la main" et se charge de nettoyer pendant que les autres attendent ?
Ma problématique réside surtout dans le fait que si la machine qui a pris la mai tombe en panne, une autre dois prendre la main et continuer le travail.

J'ai pensé, puisque je ne peux pas communiquer entre les machine via des pipe ou autre, à créé un fichier qui indique la machine qui a pris la main.
Seulement voila, l’exécution du code est ordonnancé pour se déclencher à heure fixe, donc il y a un risque élevé que le fichier soit lu et/ou écrit en même temps.

Donc, je me suis dit qu'il fallait mettre une protection sur ce fichier pour qu'une seule des machines puisse l'ouvrir.
J'ai donc essayé de me diriger vers les semaphore/mutex mais cela ne peut fonctionner car il faut, si j'ai bien compris, une communication inter-processus (voir même que les processus soit fil-parent).

Ma question final est : comment gérer l’accès concurrent à un fichier pour N processus qui ne peuvent pas communiquer entre eux, qui sont totalement indépendant ?