Jessaye dexécuter quelque chose comme:
sudo dhclient $wifi || otherFunction
Le problème est quand dhclient
échoue, il se bloque au lieu de lancer une erreur.
Comment puis-je réécrire ce qui précède pour que dhclient
soit tué et otherFunction
est appelé si dhclient
ne se termine pas dans 60 secondes?
Réponse
Votre balise timeout donne tout:
sudo timeout 60 dhclient $wifi || otherFunction
Un exemple:
sudo timeout 3 sleep 5 || echo finished early
Cela utilise lutilitaire de temporisation fourni par le paquet GNU coreutils sous Linux.
Commentaires
Réponse
Utilisez timeout
.
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Commentaires
- ne ' ne fonctionne malheureusement pas sous MacOS
Réponse
Utilisez le timeout
emballé comme gtimeout
avec le coreutils
Port dans brew
:
brew install coreutils gtimeout --help
Cela « fonctionnera avec /usr/local/bin
dans votre PATH
. Si vous souhaitez utiliser timeout
comme nom dorigine, ajoutez /usr/local/opt/coreutils/libexec/gnubin
à votre PATH
.
timeout
pour MacOS: stackoverflow.com/a/21118126/451480timeout
tuer e commande (par opposition à léchec de la commande pour dautres raisons), vérifiez létat de sortie 124.