Rentrer une commande qui se répète en boucle et en sortir
Résolu
Dr snake
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite lancer une commande interactive en boucle, prenons l'exemple avec htop qui est un moniteur interactif.Disons que je souhaite le lancer toute les 30 minutes par exemple mais qu'il n'est pas la dernière commande (ni fonction) du programme a éxécuter, comment dois-je faire ?
Le principe serait le suivant:
Mais après cette commande comment poursuivre le programme est appeler une autre fonction ?
Ce qui serait idéal pour moi ça serait quelque chose comme ça:
Mais pour cela ça nécessite d'indiquer au script que je veux continuer a avancer tout en lançant la commande htop en arrière plan tout les 30 minutes, et ça... je sais pas comment faire pour lui indiquer de ne pas s'arreter uniquement a la boucle.
Voila, merci.
Je souhaite lancer une commande interactive en boucle, prenons l'exemple avec htop qui est un moniteur interactif.Disons que je souhaite le lancer toute les 30 minutes par exemple mais qu'il n'est pas la dernière commande (ni fonction) du programme a éxécuter, comment dois-je faire ?
Le principe serait le suivant:
while : ; do
htop; sleep 1800;
done
Mais après cette commande comment poursuivre le programme est appeler une autre fonction ?
Ce qui serait idéal pour moi ça serait quelque chose comme ça:
while : ; do
htop; sleep 1800;
done
f_on part sur une autre fonction du programme une fois la commande lancée
Mais pour cela ça nécessite d'indiquer au script que je veux continuer a avancer tout en lançant la commande htop en arrière plan tout les 30 minutes, et ça... je sais pas comment faire pour lui indiquer de ne pas s'arreter uniquement a la boucle.
Voila, merci.
A voir également:
- Rentrer une commande qui se répète en boucle et en sortir
- Invite de commande - Guide
- Commande terminal mac - Guide
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Commande en attente d'acceptation fnac ✓ - Forum Consommation & Internet
- Commande dism - Guide
4 réponses
hello
( while : ; do
htop; sleep 1800;
done ) &
f_on part sur une autre fonction du programme une fois la commande lancée
dubcek
Messages postés
18789
Date d'inscription
Statut
Contributeur
Dernière intervention
5 637
pas besoin des ()
J'ai réussi a sortir de la boucle mais du coup htop ne se lance plus tout les 30 minutes, voici mon code:
Evidemment je suppose que c'est car j'indique que mon PID est différent de 0 pour sortir.Donc je me retrouve maintenant avec le problème inverse, je sors trop brutalement de ma boucle.Ne faudrait-il pas filtrer avec le nom du process plutot que le PID ? on vérifie que le PID est bien présent et si c'est la cas on passe a autre chose ?
Merci
echo -e "Entrée dans la boucle"
while : ; do
xterm -e htop sleep 1800 &
PID=$!
if [[ $! != 0 ]]; then
f_fonctionsuivante
break
fi
echo "Erreur lors du lancement de htop"
done
echo "On quitte la boucle et on passe a la fonction suivante"
sleep 2;
}
Evidemment je suppose que c'est car j'indique que mon PID est différent de 0 pour sortir.Donc je me retrouve maintenant avec le problème inverse, je sors trop brutalement de ma boucle.Ne faudrait-il pas filtrer avec le nom du process plutot que le PID ? on vérifie que le PID est bien présent et si c'est la cas on passe a autre chose ?
Merci
Merci de ta réponse dubcek, la boucle se lance et j'ai accès a la fonction suivante du script :)
Par contre il reste un soucis, si je veux stopper htop car les paramètres me conviennent tout en restant dans le script ça ne marche pas (meme avec kill -9), il faut que je quitte le script pour que le process s'arrete (j'ai fais la vérif avec ps -ef).Comment je dois gérer ma boucle si je veux la stopper plus tard sans avoir a sortir su script ?
Merci
Par contre il reste un soucis, si je veux stopper htop car les paramètres me conviennent tout en restant dans le script ça ne marche pas (meme avec kill -9), il faut que je quitte le script pour que le process s'arrete (j'ai fais la vérif avec ps -ef).Comment je dois gérer ma boucle si je veux la stopper plus tard sans avoir a sortir su script ?
Merci
Génial ça marche, dernière question et j'embete plus, si il y a plusieurs boucle a arréter je stocke tout dans un fichier.pid différent ou je peux faire un fichier global pour l'ensemble des boucles ? ou sinon un truc du genre, pour stopper tout les fichier.pid a la fois, peut-etre ça ?
Merci en tout cas car ça m'a enlevé une bonne épine du pied cette astuce :)
for PID in $( ps -e | pgrep *pid | awk '{print $1;}' ); do kill ${PID} 2>&-; done
Merci en tout cas car ça m'a enlevé une bonne épine du pied cette astuce :)