Je ne suis pas un expert de script et je me demandais ce qui était une façon acceptable d'exécuter un script pour la plupart x millisecondes (et terminer encore avant x millisecondes si le script est fait avant que le délai d'attente).Un script shell Un * x: quelle est la manière correcte d'exécuter un script pendant au plus x millisecondes?
Je résolu ce problème en utilisant Bash d'une manière que je pense est très hacky et je me demande s'il y a une meilleure façon de le faire.
Fondamentalement, j'ai un script shell appelé sleep_kill.sh
qui prend un PID comme premier argument et un délai d'attente comme second argument et qui fait cela:
sleep $2
kill -9 $1 2> /dev/null 1> /dev/null
Donc, si le PID correspond à un script finit avant de s'éteindre, rien ne va être tué (je suppose que le système d'exploitation n'aura pas le temps de réutiliser ce PID pour un autre processus [non apparenté] vu qu'il fait défiler tous les ID de processus avant de commencer à les réutiliser).
Quoi qu'il en soit, j'appeler mon script qui peut « suspendre » ou délai d'attente:
command_that_may_hang.sh
PID=$!
sleep_kill.sh $PID .3
wait $PID > /dev/null 2>&1
Et je vais attendre au plus 300 ms pour command_that_may_hang.sh
. Pourtant, si command_that_may_hang.sh
a pris seulement 10 ms pour s'exécuter, je ne serai pas "bloqué" pendant 300 ms.
Ce serait génial si un expert en coquille pourrait expliquer les inconvénients de cette approche et ce qu'il faut faire à la place.
Voir http://stackoverflow.com/questions/526782/how-do-i-limit-the-running-time-of-a-bash-script – kennytm
Si vous êtes vraiment déterminé à utiliser un délai d'attente inférieur à 1 seconde, vous voudrez envisager d'utiliser une application de pilote spécial. Même si vous aviez un sleepMilli, la programmation au niveau du shell peut rendre impossible un délai de 300 ms. – gary