OVH Cloud OVH Cloud

launchd et WatchPaths

17 réponses
Avatar
pere.noel
dans un script j'ai un "WatchPaths" qui surveille n paires de dossiers
(chez moi ça fait 6 en tout)

ce script, basiquement, prend le mtime des fichiers contenus dans ces
dossiers.

ça roule mais la question est de savoir si launchd peut me fournir,
parmis les 2n dossiers le ou lesquels ont bougé(s) ?

ou dois-je egarder au niveau des dossiers (pour éviter de regarder tous
les fichiers dans tous les dossiers) ?

je suppose que le mtime d'un dossier est affecté par le mtime du dernier
fichier contenu qui a bougé ????
--
une bévue

10 réponses

1 2
Avatar
laurent.pertois
Une bévue wrote:

dans un script j'ai un "WatchPaths" qui surveille n paires de dossiers
(chez moi ça fait 6 en tout)


Attention, WatchPaths c'est pour exécuter une tâche quand un _fichier_
est modifié, si tu veux exécuter quand un dossier reçoit un nouvel
élément, c'est QueueDirectories (et il faut vider le dossier de ses
éléments dans l'action effectuée pour ce dernier).

Tiens, encore un peu de lecture puisque Lingon ne s'exécute pas sur ton
système qui n'a pas tous les man :)

<http://www.macgeekery.com/tips/all_about_launchd_items_and_how_to_make_
one_yourself>

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
pere.noel
Laurent Pertois wrote:

Attention, WatchPaths c'est pour exécuter une tâche quand un _fichier_
est modifié, si tu veux exécuter quand un dossier reçoit un nouvel
élément, c'est QueueDirectories (et il faut vider le dossier de ses
éléments dans l'action effectuée pour ce dernier).


c'est ce que je cherchais (WatchPaths).
Tiens, encore un peu de lecture puisque Lingon ne s'exécute pas sur ton
système qui n'a pas tous les man :)

<http://www.macgeekery.com/tips/all_about_launchd_items_and_how_to_make_
one_yourself>


lingo marche maintenant sur ma bécanne, justement, il a crashé suite à
mon <dict/> sous la clé <key>ProgramArguments</key>.

j'ai envoyé mon log et ma plist au dev (suite à sa demande) normalement
Lingon n'aurait pas du crasher.


--
une bévue

Avatar
laurent.pertois
Une bévue wrote:

c'est ce que je cherchais (WatchPaths).


Et tu pointes bien sur des fichiers, pas des dossiers ?

lingo marche maintenant sur ma bécanne, justement, il a crashé suite à
mon <dict/> sous la clé <key>ProgramArguments</key>.


Ah ok, cool.

j'ai envoyé mon log et ma plist au dev (suite à sa demande) normalement
Lingon n'aurait pas du crasher.


Yep.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
pere.noel
Laurent Pertois wrote:

c'est ce que je cherchais (WatchPaths).


Et tu pointes bien sur des fichiers, pas des dossiers ?


ben... NON ;-) here is part of my plist :

<key>WatchPaths</key>
<array>
<string>/Users/yvon/MacSOUP_proxad</string>
<string>/Users/yvon/MacSOUP_proxad/Incoming News</string>
<string>/Users/yvon/MacSOUP_eclipse</string>
<string>/Users/yvon/MacSOUP_eclipse/Incoming News</string>
<string>/Users/yvon/MacSOUP_news.individual.net</string>
<string>/Users/yvon/MacSOUP_news.individual.net/Incoming
News</string>
</array>

et ça marche très bien, ca a tourné toute la nuit précédente...

ça lance mon script quand MacSOUP a changé qqc dans un de ses reps...
toutes les <string/> listées sont des répertoires.
--
une bévue


Avatar
laurent.pertois
Une bévue wrote:

et ça marche très bien, ca a tourné toute la nuit précédente...

ça lance mon script quand MacSOUP a changé qqc dans un de ses reps...
toutes les <string/> listées sont des répertoires.


Ce ne sont que des dossiers ou il y a des fichiers ?

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
pere.noel
Laurent Pertois wrote:


Ce ne sont que des dossiers ou il y a des fichiers ?


EXACT ))
--
une bévue

Avatar
laurent.pertois
Une bévue wrote:

Laurent Pertois wrote:


Ce ne sont que des dossiers ou il y a des fichiers ?


EXACT ))


Dès que l'un est modifié, ça lance, du coup, il ne doit pas s'occuper
des dossiers.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.


Avatar
pere.noel
Laurent Pertois wrote:


Dès que l'un est modifié, ça lance, du coup, il ne doit pas s'occuper
des dossiers.


ben, je ne pige pas trop ce que tu veux dire par là.

non launchd ne discrimine pas selon les dossiers, c'est moi qui doit le
faire :

je détermine quel est le dossier qui a changé, s'il a changé je regarde
les fichiers qui ont changé dans ce dossier, sinon, je passe au suivant,
au bout du compte je rafraichi un fichier donnant les fichiers qui ont
changé.

--
une bévue

Avatar
laurent.pertois
Une bévue wrote:

ben, je ne pige pas trop ce que tu veux dire par là.

non launchd ne discrimine pas selon les dossiers, c'est moi qui doit le
faire :

je détermine quel est le dossier qui a changé, s'il a changé je regarde
les fichiers qui ont changé dans ce dossier, sinon, je passe au suivant,
au bout du compte je rafraichi un fichier donnant les fichiers qui ont
changé.


Dans le WatchPaths tu lui demandes de surveiller des fichiers, dès qu'un
fichier est modifié il exécute l'action précisée en ProgramArgument. Que
ce dernier fasse tout un tas d'actions, pas de soucis.

Si tu surveilles un dossier, il ne verra que les changements d'étant,
comme ajout ou suppression d'un élément, touch du dossier, mais modifier
un élément existant dans le dossier surveillé ne l'invoquera pas.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
pere.noel
Laurent Pertois wrote:


Si tu surveilles un dossier, il ne verra que les changements d'étant,
comme ajout ou suppression d'un élément, touch du dossier, mais modifier
un élément existant dans le dossier surveillé ne l'invoquera pas.


Ah bon ? ce n'est pas ce que je trouve moi, les dossiers en question ne
sont pas modifiés, seuls les fichiers (certains) à l'intérieur sont
modifiés et j'ai remarqué que le mtime d'un dossier et tjs le même que
celui du fichier le plus récent...

en tout cas ça marche.
--
une bévue

1 2