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
.
timeout
voor MacOS: stackoverflow.com/a/21118126/451480timeout
de e-commando (in tegenstelling tot het commando dat om andere redenen mislukt), controleer op exitstatus 124.