Jeg prøver å kjøre noe som:
sudo dhclient $wifi || otherFunction
Problemet er når dhclient mislykkes, det henger bare i stedet for å kaste en feil.
Hvordan kan jeg skrive om det ovenfor slik at dhclient drept og otherFunction blir kalt hvis dhclient ikke fullfører på 60 sekunder?
Svar
timeout -koden gir alt:
sudo timeout 60 dhclient $wifi || otherFunction
Et eksempel:
sudo timeout 3 sleep 5 || echo finished early
Dette bruker timeout-verktøy levert av GNU coreutils-pakken på Linux.
Kommentarer
Svar
Bruk timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Kommentarer
- fungerer ikke ' t fungerer på MacOS dessverre
Svar
Bruk timeout pakket som gtimeout med coreutils port i brew :
brew install coreutils gtimeout --help
At «jeg vil jobbe med /usr/local/bin i PATH. Hvis du vil bruke timeout som opprinnelig navngitt, legg til /usr/local/opt/coreutils/libexec/gnubin til PATH.
timeoutfor MacOS: stackoverflow.com/a/21118126/451480timeoutdrepe e-kommandoen (i motsetning til at kommandoen mislykkes av andre grunner), sjekk for utgangsstatus 124.