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.
timeout
MacOS: stackoverflow.com/a/21118126/451480timeout
tappamisen e-komento (toisin kuin komento epäonnistuu muista syistä), tarkista poistumistila 124.