Ik “probeer iets uit te voeren als:
sudo dhclient $wifi || otherFunction
Het probleem is wanneer dhclient mislukt, het blijft hangen in plaats van een foutmelding te geven.
Hoe kan ik het bovenstaande herschrijven zodat dhclient is gedood en otherFunction wordt gebeld als dhclient niet “binnen 60 seconden klaar is?
Antwoord
Uw time-out -tag geeft het allemaal weg:
sudo timeout 60 dhclient $wifi || otherFunction
Een voorbeeld:
sudo timeout 3 sleep 5 || echo finished early
Dit gebruikt het time-outprogramma geleverd door het GNU coreutils-pakket op Linux.
Opmerkingen
Answer
Gebruik timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Opmerkingen
- werkt niet ' helaas niet op MacOS
Antwoord
Gebruik de timeout verpakt als gtimeout met de coreutils poort in brew :
brew install coreutils gtimeout --help
Dat “zal werken met /usr/local/bin in uw PATH. Als je timeout wilt gebruiken zoals oorspronkelijk genoemd, voeg dan /usr/local/opt/coreutils/libexec/gnubin toe aan je PATH.
timeoutvoor MacOS: stackoverflow.com/a/21118126/451480timeoutde e-commando (in tegenstelling tot het commando dat om andere redenen mislukt), controleer op exitstatus 124.