Je comprends vos avis et je m'excuse de pas avoir été assez clair
En mettant de l'ordre dans mes idées et dans mon code j'ai "presque" réussi a faire ce que je voulais.Donc on a plus 3 fonction mais 2.La fonction 1 éxécute 2 commande en xterm tant que le fichier test.txt n'est pas rempli, la fonction 2 est appelée toute les x seconde.Le code de la seconde fonction 2 n'est pas important mais une fois qu'elle s'est terminée elle revient dans la fonction 1 en l'appelant tout simplement.Voici le code de la fonction 1 qui gère le tout.Tout se passe bien sauf au moment de revenir au menu principale, il semble avoir des difficulté a sortir des boucles:
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
| f_1(){
echo -e "\e[1;34m[*]\e[0m On commence la fonction 1"
sleep 1;
xterm -hold -bg '#000000' -fg '#3A94FF' -e commande1 &> /dev/null &
echo $! >/root/commande1.pid
sleep 1;
xterm -hold -bg '#000000' -fg '#3A94FF' -e commande2 &> /dev/null &
echo $! >/root/commande2.pid
sleep 1;
while : ; do
sleep ${seconde} ; f_2; done & # Appelle de la fonction 2 toute les x seconde
echo $! >/root/pidelabouclewhile.pid # On prend le PID de la boucle while qui appelle la fonction 2 toute les x ${seconde}
until test -s /apache2/test.txt; do
sleep 1;
done
echo -e "\e[1;34m[*]\e[0m Fichier test rempli, arrét de la fonction 2 et retour au menu principal"
kill 9 `cat /root/pidelabouclewhile.pid` # Arret du PID de la boucle while qui appelle la fonction 2 toute les x ${seconde}
rm -rf pidelabouclewhile.pid
sleep 1;
kill `cat /root/commande1.pid`
sleep 1;
kill `cat /root/commande2.pid`
sleep 1;
f_mainmenu
} |
Je précise que tout marche bien sauf quand je reviens au menu principal, il s'affiche je ne sais combien de fois a la suite, et je dois faire un ctrl+c pour sortir de la.En gros ça me donne sa:
1 2 3 4
| Test des fichiers
test des fichiers
test des fichiers
etc... |
"Test des fichier" est le menu principal.
Pourtant j'ai mis un kill 9 sur ma boucle while et le until attend bien que le fichier test soit rempli puisque
echo -e "\e[1;34m[*]\e[0m Fichier test rempli, arrét de la fonction 2 et retour au menu principal"
s'affiche et que les PID de commande1 et commande2 ont été effacés.Donc la... je sèche.Dois-je passer par une fonction intermédiaire qui vérifis que tout les process sont stopé avant de revenir au menu principal ?
Je sais que la plupart d'entre vous etes des professionnel ou étudiant en informatique, je ne suis ni l'un ni l'autre mais juste un utilisateur de plusieurs version de GNU/linux qui s'éclate a sa manière
Partager