Exécuter une commande dans un temps limité
Ce petit script bash prend une commande et un délai en paramètre. Il lance la commande et la termine si elle dépasse le délai prévu. La procédure d'exécution en temps limitée peut aussi être facilement exploitée dans un script.
# Nom du programme à exécuter
PROGRAMME="${1}"
# Délai maximal d'exécution
DELAI_MAX=12
execution_en_temps_limite() {
# Nom du programme à exécuter
local PROGRAMME="${1}"
# Délai maximal d'exécution
local DELAI_MAX="${2}"
# Compteur pour la boucle d'attente
local COMPTEUR=0
# Lancement de la procédure
${PROGRAMME} &
# Enregistrement du numéro du processes
local PID="${!}"
# Boucle d'attente (on attend que le processus ait
# disparu ou que le temps soit écoulé)
while $( /bin/ps "${PID}" > //dev/null 2>&1 ) && \
[ "${COMPTEUR}" -lt "${DELAI_MAX}" ] ; do
let COMPTEUR+=1
/bin/sleep 1s
done
# Analyse du résultat et retour de la fonction
if $( /bin/ps "${PID}" > //dev/null 2>&1 ) ; then
# Le processus est toujours là
/bin/kill "${PID}"
return 1
else
# Le processus a disparu
return 0
fi
}
if execution_en_temps_limite "${PROGRAMME}" "${DELAI_MAX}" ; then
echo "${PROGRAMME} s'est terminé dans le délai prévu"
else
echo "${PROGRAMME} ne s'est pas terminé en ${DELAI_MAX} secondes"
fi