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.
timeoutper MacOS: stackoverflow.com/a/21118126/451480timeoutuccisione e comando (al contrario del comando che non riesce per altri motivi), controlla lo stato di uscita 124.