Yritän suorittaa jotain tällaista:
sudo dhclient $wifi || otherFunction
Ongelma on, kun dhclient epäonnistuu, se vain jumittuu virheen heittämisen sijaan.
Kuinka voin kirjoittaa yllä mainitun uudelleen niin, että dhclient on tapettu ja otherFunction kutsutaan, jos dhclient ei ole valmis 60 sekunnissa?
Vastaa
aikakatkaisu -tagisi antaa kaiken pois:
sudo timeout 60 dhclient $wifi || otherFunction
Esimerkki:
sudo timeout 3 sleep 5 || echo finished early
Tämä käyttää aikakatkaisuohjelmaa tarjoaa GNU coreutils -paketti Linuxissa.
Kommentit
Vastaa
Käytä timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Kommentit
- ei toimi ' ei toimi valitettavasti MacOS-käyttöjärjestelmässä
Vastaa
Käytä timeout -tunnusta gtimeout muodossa coreutils -portti brew :
brew install coreutils gtimeout --help
Että ”työskentelen /usr/local/bin kanssa PATH -palvelussa. Jos haluat käyttää timeout -tunnusta alun perin nimeltään, lisää /usr/local/opt/coreutils/libexec/gnubin PATH -kansioon.
timeoutMacOS: stackoverflow.com/a/21118126/451480timeouttappamisen e-komento (toisin kuin komento epäonnistuu muista syistä), tarkista poistumistila 124.