Bonjour à tous,

Je suis nouveau sur le forum. Je connais le shell mais vraiment pas un expert.

Je vous remercie d'avance pour votre aide.

Voilà mon script :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/ksh
set -x
#positionnement des variables
# récuperation une liste de fichier dans NOM_FIC, et non un seul fichier
# tant qu'il n'y a pas de fichier, on boucle
 
while true
 
do
 
REP="/home/1000/test"
 
 
if [ `ls -ltr $REP/* | wc -l` = "0" ]
 
 
    then
      echo "Le repertoire $REP est vide" >> /home/1000/repertoire_vide.log
       else
          for file in `ls -a $REP/*` # ls -1l pour mettre sur une colonne si +sieurs fichiers
do
             fuser $file 2> /dev/null
                  if [ $? -eq 0 ] # fuser trouve un process associé dans $file alors on passe au fichier suivant.
                 then
                       sleep  10
 
                                 continue
 
 
else # fuser trouve pas de process, donc fichier libre on envoi
 
 
mv /home/1000/test/* /home/1000
 
fi
done
fi
done


----> ce script marche pour 1 seul fichier ou plusieurs mais pas en cours d'utilisation.
S'il y a 1 fichier "fermé" et 1 en cours d'utilisation, il "move" quand même.

Avec le fuser, pourtant, je teste le code retour... et il attend que tous les fichiers sont fermés et ne bougent plus.. pourtant, cela ne marche pas.


Merci encore pour votre aide


Jacques