Jeg prøver at køre noget som:
sudo dhclient $wifi || otherFunction
Problemet er når dhclient mislykkes, det hænger bare i stedet for at kaste en fejl.
Hvordan kan jeg omskrive ovenstående, så dhclient er dræbt og otherFunction bliver kaldt, hvis dhclient slutter ikke på 60 sekunder?
Svar
Dit timeout -tag giver det hele væk:
sudo timeout 60 dhclient $wifi || otherFunction
Et eksempel:
sudo timeout 3 sleep 5 || echo finished early
Dette bruger timeout-værktøj leveret af GNU coreutils-pakken på Linux.
Kommentarer
Svar
Brug timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Kommentarer
- fungerer ' desværre ikke på MacOS
Svar
Brug timeout pakket som gtimeout med coreutils port i brew :
brew install coreutils gtimeout --help
At “jeg vil arbejde med /usr/local/bin i din PATH. Hvis du vil bruge timeout som oprindeligt navngivet, skal du tilføje /usr/local/opt/coreutils/libexec/gnubin til din PATH.
timeouttil MacOS: stackoverflow.com/a/21118126/451480timeoutdræber th e-kommandoen (i modsætning til kommandoen, der mislykkes af andre årsager), skal du kontrollere, om der er exit-status 124.