Citation
sami_c
stp tu peux me donner un bout de code ?
Ce bout de code "script shell" surveille un répertoire (passé en argument)
Dès
#!/bin/sh
# Script qui surveille les répertoires de façon infinie
# Usage: prog rep1 [rep2 ...]
# Ecriture de la fonction qui lance un traitement quelconque
# Argument 1: Nom du fichier à traiter
traitement()
{
(
# Ici on programme le traitement (un simple "echo" pour l'exemple)
echo $1
)
}
# Ecriture de la fonction dont le but est de surveiller un répertoire
# Argument 1: Nom du répertoire à surveiller
# Argument 2: Nom du fichier qui sert à conserver les infos
surveillance()
{
(
# Balayage de chaque fichier du répertoire donné en argument 1
ls -a $1 |while read file
do
# Si le fichier n'est pas présent dans les infos (donné en argument 2)
grep "^$file$" $2 1>/dev/null; status=$?
if test $status -ne 0
then
# Le fichier est nouveau - Lancement du traitement
traitement $1/$file
fi
# On regénère les infos à partir du "ls"
ls -a $1 >$2
done
)
}
# Ecriture du programme principal
# S'il n'y a pas d'argument, pas la peine de continuer
test $# -eq 0 && exit 1
# On diminue la priorité du script (après tout, il n'est pas vraiment primordial)
nice -20
# On récupère le nom du script (servira de base aux noms des fichiers de travail)
script=`basename $0 .sh`
# Boucle de surveillance infinie
while true
do
# Traitement de chaque répertoire donné en argument
for rep in $*
do
# Création du nom qui servira à stocker les infos du répertoire
# On utilise le nom du répertoire en remplaçant "/" par ":"
info=`echo "$rep" |sed -e "s/\//:/g"`
# Surveillance du répertoire avec le fichier qui servira de mémoire
surveillance "$rep" "/tmp/$script.$info.bdd"
done
# Petite tempo parce qu'on ne va pas surveiller à chaque nanoseconde
sleep 1
done
Bon, j'ai tapé ça vite fait (sans le tester mais j'ai confiance). Il est sûrement très perfectible mais pour l'instant, c'est tout ce que je vois.
Il te suffit de lancer ce script en arrière-plan en lui donnant en arguments les répertoires à surveiller.
Pour tester, tu ouvres une seconde console et tu l'utilises pour aller copier un fichier dans un des répertoires à surveiller. Normallement dans la première fenêtre, il devrait apparaître le nom du fichier.
L'homme qui murmurait à l'oreille des pingouins
[
fr.lang.free.fr]
Poste le Wednesday 4 April 2007 21:54:25