Î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
.
timeout
pentru MacOS: stackoverflow.com/a/21118126/451480timeout
este ucis Comanda (spre deosebire de eșecul comenzii din alte motive), verificați starea de ieșire 124.