Question NFS - Détecter des fichiers créés à distance par programme?


J'essaie de surveiller un partage NFS et de détecter la création d'un fichier à l'aide d'un processus exécuté sur un système distant. Le problème est que la détection ne fonctionne pas après la création du fichier, mon script pense toujours qu'il n'y a pas de fichier. Si quelqu'un effectue un ls dans le répertoire ou si j'exécute un processus séparé qui effectue ls régulièrement en arrière-plan, le script détectera alors que le fichier existe. L'ajout de la fonctionnalité "ls the directory" dans le script principal ne fonctionne toutefois pas: il ne détecte toujours pas l'existence du fichier tant qu'un processus externe ne permet pas d'actualiser le contenu de la liste de répertoires, quelque part.

Voici un cas de test qui illustre le problème:

watch_file.pl:

#!/usr/bin/perl -w
my @stat;
while (1) {
    @stat = stat("/nfs/test");
    last if ($stat[1] && $stat[1] > 0);
}

Exécutez ce script simple sur "hôte-A":

host-A% ./watch_file.pl &
[1] 9312

Passez sur "host-B" et créez le fichier:

host-B% touch /nfs/test

... retour à "hôte-A", le programme n'est pas encore terminé:

host-A% 

... toujours sur "hôte-A", faites un ls dans le répertoire, le script voit alors le fichier:

host-A% ls -a /nfs
.  ..  test
host-A%
[1]+  Done                    ./watch_file.pl &
host-A%

Est-ce que quelqu'un connaît une solution simple ou une solution de contournement qui serait moins efficace que d'exécuter un script en arrière-plan dans le répertoire NFS toutes les 10 secondes?


5
2018-06-08 16:03


origine


Peut-être que cela devrait être sur stackoverflow? - serverhorror
Probablement raison ... pardonnez le noob qui vient d'apprendre les tenants et les aboutissants de ces sites géniaux. - Daniel DeVoe
Ne vous inquiétez pas, un modérateur le déplacera probablement "très bientôt maintenant" - il sera toujours affiché ici pour que vous puissiez même garder votre signet :) - serverhorror


Réponses:


Par défaut, la plupart des clients NFS mettent en cache les informations du répertoire pendant 60 secondes.

Montez le partage NFS sur le client avec le noac option pour désactiver la mise en cache d'attributs, ou utiliser acdirmin=0,acdirmax=0 simplement désactiver la mise en cache du répertoire.


6
2018-06-08 17:01



La perfection! Je suis redevable à Hyppy et je vous voterais si j'avais le représentant. - Daniel DeVoe
@Daniel Aucun vote positif nécessaire, mais un "accepter" serait apprécié. (La coche sous le décompte des voix) - Hyppy
Fait et fait. Merci d'être si patient avec moi! - Daniel DeVoe