Je suis à la recherche d'un moyen de limiter le temps d'exécution d'une commande. Actuellement, je déclenche des scripts via rsh (oui je sais sécurité, ssh C mieux toussa... ce à quoi je répond vieux HP9000 ;p ) mais il arrve que le rsh se plante et ne rende jamais la main.
J'ai donc mis en place un script du genre:
#!/bin/bash
#
# Lance une commande rsh en forcant un kill après une durée de 5 sec
# pour eviter que rsh reste bloqué
#
# on execute le rsh en arrière plan
rsh "$@" &
# on récupère le PID du rsh
PID=$!
# au bout de 5 sec on kill le pid en question
sleep 5
kill -TERM $PID 2> /dev/null
Le problème de ça (outre le fait que ça soit moyennement propre) c'est que dans tous les cas, le script reste bloqué au minimum 5 sec. Existe-il un moyen plus efficace pour répondre a mon besoin?
D'avance merci.
# Utiliser jobs
Posté par Étienne . Évalué à 4.
#!/bin/bash
#
# Lance une commande rsh en forcant un kill après une durée de 5 sec
# pour eviter que rsh reste bloqué
#
# on execute le rsh en arrière plan
rsh "$@" &
# on récupère le PID du rsh
PID=$!
for i in $(seq 5)
do
#options de jobs
# -p affiche le PID des processus en backgroupd
# -r n'affiche que les processus qui sont en cours d'execution (pas ceux qui sont déjà terminés)
# Si le process est terminé, on peut quitter tranquillement.
jobs -pr | grep -q $PID || exit
sleep 1
done
# au bout de 5 sec on kill le pid en question
kill -TERM $PID 2> /dev/null
# timelimit
Posté par Kerro . Évalué à 5.
http://devel.ringlet.net/sysutils/timelimit/
Je pense que ça se compile au poil sur une machine comme la tienne.
# Merci
Posté par ChickenKiller . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.