Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1749 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Limiter le temps d'execution d'une commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Limiter le temps d'execution d'une commande

n°810651
kaiska
Posté le 17-05-2006 à 16:06:00  profilanswer
 

Bonjour,
 
J'ai actuellement un programme qui a tendance à partir en boucle infinis et à ne pas me rendre la main. J'ai donc un paliatif pour l'empecher de durer plus de 60 secondes :

commande& sleep 60; kill $!

Le problème c'est que si tous se passe bien et que le programme rend la main, je dois quand meme attendre 60 secondes. Y'a t'il un moyen pour ne pas attendre 60 secondes en cas de "succès" de l'application ?  :pt1cable:

mood
Publicité
Posté le 17-05-2006 à 16:06:00  profilanswer
 

n°810652
memaster
ki a volé mon 62?
Posté le 17-05-2006 à 16:21:31  profilanswer
 

il faut recuperer la variable renvoyée par le main() de ton application
pour savoir si celle ci est bien lancée ou non.
 
sinon, faire un px -x et faire un test sur le pid de ta commande
 
tu peux aussi créer un processus fils qui envoie un SIGN au pere
de rendre la main.

n°810656
kaiska
Posté le 17-05-2006 à 16:28:53  profilanswer
 

Hum,  
je ne comprends pas tout, pour tout dire j'utilise cette commande sur mencoder. Parfois il m'arrive que mencoder se gauffre sur certain formats sur un serveur d'encodage, et il part en boucle infini (un bug de mencoder). Il mouline alors des heures et ne rend jamais la main. L'encodage se fait sur de tous petit fichiers et ne doit pas depasser les 20 secondes. Je cherche donc à tuer le process mencoder s'il depasse la minute comme temps d'execution. Avec ma commande ca marche, mais quand il fini sont travail au bout de 1 seconde et me rend la main, ça dure quand meme 60 secondes a cause du sleep. Je cherche donc à ne pas executer le "sleep 60; kill $!" lorsque mencoder rend bien la main.

n°810675
memaster
ki a volé mon 62?
Posté le 17-05-2006 à 17:12:22  profilanswer
 

le pb de ton script c'est que ta commande est lancée en arriere plan "&".
 
pour le principe :
admettons que ton script1 (père) lance un script2 (fils)
dans ton script1 tu mets
script2
sleep 60
kill pid de ta commande/memencoder
 
dans ton script2 tu mets
commande&
 
ainsi tu as fait une cascade de script que tu peux faire communiquer
par un SIGN (regarde les doc de processus UNIX)
 
admettons que script2 soit terminé avant les 60sec, on peut intervenir
sur le kill de script1 (processus pere) avant que sleep 60 soit terminé.
 
sinon
si ton script2 n'est pas terminer avant script1, alors
script1 detruit aussi la totalité des processus (fils) lancé.
 
voila

n°810699
kaiska
Posté le 17-05-2006 à 18:16:02  profilanswer
 

Merci beaucoup, ça m'a l'air d'etre le bon chemin.
Saurais tu me faire un exemple, je retourne ça dans tous les sens mais je n'arrive à rien....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Limiter le temps d'execution d'une commande

 

Sujets relatifs
OpenStuff.net - Problème de commandeDiffuser sur shoutcast en ligne de commande.
commande console pour debit entrant en coursCommande qui affiche qu'une ligne
Passer une commande unix à un serveur (ssh?)[PDC Samba - Client XP] Synchronisation temps des clients
le temps réel n'a pas l'air actif Jackd ubuntu module-assistantRéaliser un site mirroir utilisé si le temps d'accès est trop long
Ecouter de la musique et parler sur teamspeak en meme temps..Créer des queues en ligne de commande?
Plus de sujets relatifs à : Limiter le temps d'execution d'une commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR