Încerc să rulez ceva de genul:
sudo dhclient $wifi || otherFunction
Problema este când dhclient nu reușește, doar se blochează în loc să arunce o eroare.
Cum pot rescrie cele de mai sus, astfel încât dhclient să fie ucis și otherFunction este apelat dacă dhclient nu se termină în 60 de secunde?
Răspunde
Eticheta dvs. timeout oferă totul:
sudo timeout 60 dhclient $wifi || otherFunction
Un exemplu:
sudo timeout 3 sleep 5 || echo finished early
Aceasta folosește utilitarul timeout furnizat de pachetul GNU coreutils pe Linux.
Comentarii
Răspuns
Utilizați timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Comentarii
- nu funcționează ' din Mac, din păcate
Răspuns
Utilizați timeout ambalat ca gtimeout cu coreutils port în brew :
brew install coreutils gtimeout --help
Aceasta va funcționa cu /usr/local/bin în PATH. Dacă doriți să utilizați timeout așa cum a fost denumit inițial, adăugați /usr/local/opt/coreutils/libexec/gnubin la PATH.
timeoutpentru MacOS: stackoverflow.com/a/21118126/451480timeouteste ucis Comanda (spre deosebire de eșecul comenzii din alte motive), verificați starea de ieșire 124.