Sto cercando di eseguire qualcosa del tipo:
sudo dhclient $wifi || otherFunction
Il problema è quando dhclient
non riesce si blocca invece di generare un errore.
Come posso riscrivere quanto sopra così dhclient
è ucciso e otherFunction
viene chiamato se dhclient
non finisce entro 60 secondi?
Risposta
Il tuo tag timeout dà tutto:
sudo timeout 60 dhclient $wifi || otherFunction
Un esempio:
sudo timeout 3 sleep 5 || echo finished early
che utilizza lutilità timeout fornito dal pacchetto GNU coreutils su Linux.
Commenti
Risposta
Utilizza timeout
.
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Commenti
- ' non funziona su MacOS purtroppo
Risposta
Utilizza timeout
impacchettato come gtimeout
con coreutils
porta in brew
:
brew install coreutils gtimeout --help
Funzionerà con /usr/local/bin
nel tuo PATH
. Se desideri utilizzare timeout
come originariamente chiamato, aggiungi /usr/local/opt/coreutils/libexec/gnubin
al tuo PATH
.
timeout
per MacOS: stackoverflow.com/a/21118126/451480timeout
uccisione e comando (al contrario del comando che non riesce per altri motivi), controlla lo stato di uscita 124.